【问题标题】:Passing Intent can't get extra();传递 Intent 不能得到 extra();
【发布时间】:2014-12-27 20:10:18
【问题描述】:

您好,我无法在我的主要活动的网页中登录,我将意图传递给另一个活动,但我无法获取摘录。我该如何解决呢

这是我的主要活动 公共类 ViewActivity 扩展 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();

            Intent goToNextActivity = new Intent(getApplicationContext(), ViewActivity.class);
            goToNextActivity.putExtra("username", user_name);
            goToNextActivity.putExtra("username", pass_word);

            startActivity(goToNextActivity);


        }
    });

在这里查看活动

private WebView webView;

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 MyWebViewClient());




    webView.loadUrl("http://something.com");



}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        Intent goToNextActivity = new Intent(getApplicationContext(), MainActivity.class);
        goToNextActivity.getExtras();
        return true;

    }
}

它正在加载一个网页但没有登录

【问题讨论】:

标签: android android-intent android-activity android-studio


【解决方案1】:
Intent extras = getIntent().getExtras();
String newString;
if(extras == null) {
    newString= null;
} else {
    newString= extras.getString("username");
}

对于用户名和密码这两个值,您提供相同的键值...请更改并尝试一下。

【讨论】:

  • 我没有使用模拟器,直接到设备甚至 adb mod 因为自定义 rom 而无法工作
  • 你可以将你的 getintent 替换为你的第二个活动的 oncreate() 并尝试一下。
  • 或者我必须删除这个
  • 应该重写方法吗?
  • 将getextras()接收变量声明为全局变量并在shouldoverride方法中使用
【解决方案2】:

使用下面的代码从意图中获取数据:-

Intent intent = getIntent();
String username= intent.getStringExtra("username");

将以上代码写入shouldOverrideUrlLoading方法中。

【讨论】:

    【解决方案3】:

    这里

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

    你正在构建一个全新的Intent,这不是你想要的。您想使用启动ActivityIntent

    出于这个原因,你想使用

    Intent i = getIntent();
    

    因为我们可以看到from the Activity Docs 那个getIntent()

    返回启动此活动的意图。

    如果不是null,则获取extras

    if (i.getExtras() != null) {
        String userName = i.getStringExtra("username");
        String password = i.getStringExtra("password");  // you have a typo in your passing Intent
    }
    

    为此,您需要您的 Activity Context,因此最好/更容易在 onCreate() 中进行操作,而不是在您的内部阶层中进行操作,除非有原因您不能在那里进行操作。

    【讨论】:

    • 好的,我正在这样做,我会尽快发布结果
    • @Andrew 好的,它应该适合您,但请确保您了解为什么。如果没有,请询​​问。
    【解决方案4】:

    试试这个方法,希望能帮助你解决问题。

    有两种方式将数据传递/获取一个活动到另一个活动。

    1.向意图添加数据。

    怎么放:

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

    如何获得:

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

    2.将数据添加到bundle,并将bundle添加到intent。

    怎么放:

    Intent goToNextActivity = new Intent();
    Bundle bundle = new Bundle();
    bundle.putString("username", user_name);
    bundle.putString("password", pass_word);
    goToNextActivity.putExtras(bundle);
    

    如何获得:

    String username = getIntent().getExtras().getString("username");
    String password = getIntent().getExtras().getString("password");
    

    【讨论】:

    • 非常感谢我会努力的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多