【问题标题】:Intent not passes my to my second Activity意图不传递给我的第二个活动
【发布时间】:2014-12-28 03:48:22
【问题描述】:

原因是我填写了我的用户名和密码然后点击登录按钮在页面再次加载需要你填写用户名,这里的密码是我的源代码

public class MainActivity extends Activity {

private EditText mTextUserName;
private EditText mTextPassword;
public String user_name;
public String pass_word;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextUserName = (EditText) findViewById(R.id.textUserName);
    mTextPassword = (EditText) findViewById(R.id.textPassword);


    final Button mButtonLogin = (Button) findViewById(R.id.buttonLogin);
    mButtonLogin.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            user_name = mTextUserName.getText().toString();
            pass_word = mTextPassword.getText().toString();
           // i am passing this intent 
            Intent goToNextActivity = new Intent(getApplicationContext(), ViewActivity.class);

            goToNextActivity.putExtra("username", user_name);
            goToNextActivity.putExtra("password", pass_word);

            startActivity(goToNextActivity);


        }
    });
}

在我的 ViewActivity 中也是

public class ViewActivity extends Activity {

private WebView webView;
public String pass_word;
public String user_name;

public void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);
    setContentView(R.layout.view);
    webView = (WebView) findViewById(R.id.webView);

    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setDefaultFontSize(20);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());

                //here i get them 
                getIntent().getStringExtra("username");
                getIntent().getStringExtra("password");




    webView.loadUrl("http://intranet.mdis.uz/");
}

但这确实有效((我花了 8 个小时进行研究,但没有任何帮助

【问题讨论】:

  • 当你按下按钮时,你不是去ViewActivity吗?如果您尝试 Intent goToNextActivity = new Intent(getActivity(), ViewActivity.class) 会怎样?
  • 不清楚您要做什么。你打电话给getIntent().getStringExtra("username");getIntent().getStringExtra("password");,但不要对返回值做任何事情。
  • 活动发生变化意味着用户已经登录

标签: java android android-activity android-studio


【解决方案1】:

我认为这行是错误的:

Intent goToNextActivity = new Intent(getApplicationContext(), ViewActivity.class);

当您尝试开始新活动时,不应使用ApplicationContext。试试这个:

Intent goToNextActivity = new Intent(MainActivity.this, ViewActivity.class);

编辑:

试试这个,它应该通过 POST 发送数据:

    webView = (WebView) findViewById(R.id.webView);

    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setDefaultFontSize(20);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());

    String username = getIntent().getStringExtra("username");
    String password = getIntent().getStringExtra("password");

    String data = "username=" + username + "&password=" + password;

    webView.postUrl("http://intranet.mdis.uz/", EncodingUtils.getBytes(data, "base64"));

【讨论】:

  • 同样的结果
  • 是的,如果你愿意,我可以给你我的凭据让你尝试
  • String data = "username=" + username + "&password=" + password;将此行更改为String data = "edit-name=" + username + "&edit-pass=" + password;
  • 同样的结果
  • 不是edit-nameedit-pass表单输入。它是namepass。比如:String data = "name=" + username + "&pass=" + password;
【解决方案2】:

让我试试看。

这样修改一次,看看plz...

public class MainActivity extends Activity {

private EditText mTextUserName;
private EditText mTextPassword;
public String user_name;
public String pass_word;
ConnectionClass cc;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTextUserName = (EditText) findViewById(R.id.textUserName);
    mTextPassword = (EditText) findViewById(R.id.textPassword);

    cc=new ConnectionClass(this);
    final Button mButtonLogin = (Button) findViewById(R.id.buttonLogin);
    mButtonLogin.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            user_name = mTextUserName.getText().toString();
            pass_word = mTextPassword.getText().toString();

            user_name=Uri.encode(user_name); // you can encode your parameters so that it does not throw exception for e.g it will replace a space as %20 otherwise if user enters special character error will come.. :)
            pass_word=Uri.encode(pass_word); // same as above

            String url="http://myserver.com/login.php?username="+user_name"&password="+user_name; // this is your server page url and passing username and password in plain url u can test it in browser to verify its working :)

            new AsyncTask<String,Void,String>() // new android versions does not allow network operations on main thread but need to do asynchronously...
            {

               @Override
               protected String doInBackground(String... params) {

               return cc.getServerResponse(params[0]);
              }

              @Override
        protected void onPostExecute(String result) {  // this method runs on UI thread and is called when background process is done to make it more fancy u can use onPreExecute() to show a loader and dismiss the dialog here :)
            super.onPostExecute(result);
            if(result!=null)
            {
                if(result.equals("1")  // assuming u r returning "1" if successful.
                {
                    Toast.makeText(context, "Successful", 2000).show();
                    Intent goToNextActivity = new Intent(MainActivity.this, ViewActivity.class);
                    goToNextActivity.putExtra("username", user_name);
                    goToNextActivity.putExtra("password", pass_word);
                    startActivity(goToNextActivity);
                }
            }
            else
                Toast.makeText(context, "Network problem...", 2000).show();
        }

            }.execute(url);


            }


        }
    });
}

这是连接类

public class ConnectionClass {


    Context context;
    public ConnectionClass(Context ctx) {
        this.context=ctx;
    }


    public String getServerResponse(String urlLink)
    {

        try 
        {

            HttpClient client = new DefaultHttpClient();
            HttpPost http_get = new HttpPost(url);
            HttpResponse responses;
            responses = client.execute(http_get);
            if (responses != null) 
            {
                InputStream in = responses.getEntity().getContent(); 
                String a = convertStreamToString(in);
               // Log.i("RETURN",a+"");
                return a;
            }

        } 
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }



    String convertStreamToString(InputStream is) {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try
        {
            while ((line = reader.readLine()) != null) 
            {
                sb.append(line);
            }
        } 
        catch (Exception e)
        {

             //Toast.makeText(context, e.toString()+" io2", Toast.LENGTH_LONG).show();
        } 
        finally 
        {
            try 
            {
                is.close();
            } 
            catch (Exception e)
            {

                //Toast.makeText(context, e.toString()+" io3", Toast.LENGTH_LONG).show();
            }
        }
        return sb.toString();
    }

}

希望对你有帮助:)

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 2013-05-08
    相关资源
    最近更新 更多