捆绑到MainActivity.java

时间:2018-08-18 17:35:07

标签: android android-intent android-recyclerview bundle

因此,我在主要活动中有一个回收站视图,一旦我击中一个元素,便可以转到另一个屏幕并使用捆绑包发送信息(例如,单击的回收站视图中的元素名称)。一切正常。

现在,我正尝试回到主要活动并将信息发送到将在Toast中显示的主要活动

这是我第二回活动中的一部分

public void onClick(View view) {
                String text1 = "";
                Bundle bundle = new Bundle();
                bundle.putString("xyz1",editText.getText().toString());


                Intent returnIntent = new Intent(view.getContext(),MainActivity.class);
                returnIntent.putExtras(bundle);
                view.getContext().startActivity(returnIntent);
            }

这是我在oncreate方法中检索它的主要活动中的内容

//Bundle bundle = this.getIntent().getExtras();
        //String value = bundle.getString("xyz1");
        //Toast.makeText(this,value,Toast.LENGTH_SHORT).show();

我有评论,因为它崩溃了。我的猜测是由于第一次启动该程序而导致崩溃,没有捆绑包,也没有来自第二个活动的信息。

我可以用另一种方式(从主要活动到第二项活动)

如何处理?

2 个答案:

答案 0 :(得分:0)

在访问捆绑软件中的参数之前,请尝试执行空检查。

private static final String EXTRA_MY_STRING = "xyz1";

if (getIntent().getExtras() != null)
{
    Bundle extras = getIntent().getExtras();
    String value = extras.getString(EXTRA_MY_STRING);
    if (!TextUtils.isEmpty(value))
    {
       // show Toast
    }
}

此外,它有助于发布日志,以便我们可以查看崩溃的原因。

答案 1 :(得分:0)

您可以通过几种不同的方式对其进行存档,

您的FirstActivity(尚不清楚活动的名称是什么),您应该像这样使用它。

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
EditText nameText = (EditText) findViewById(R.id.query_textbox);
intent.putExtra("key", nameText.getText());
startActivity(intent);

这是我解决问题的方法。我认为它的格式是最好的,并且其他可能正在阅读您代码的人也很容易理解(遵循良好的编程格式)

然后在您的SecondActivity.class内部(我认为您应该是MainActivity.class)

Bundle extras = getIntent().getExtras();
   if (extras != null) {
        String extraStr = extras.getString("key");
    }else {
        extraStr = "extra not set";
    }

如果您想使用格式正确的代码,应该像这样

Intent intent = getIntent();
// Get the extras (if there are any)
Bundle extras = intent.getExtras();
if (extras != null) {
    if (extraStr.containsKey("key")) {
        String extraStr = extras.getString("key");
        // TODO: Do something.
    }
}

或还可以使用Intent方法直接访问您的附加内容。

String extraStr = getIntent().getExtras("key");

我将在此处附加一些参考,如果您愿意的话,它们将帮助您获得更多的了解。谢谢。

参考文献http://ausmarton.blogspot.com/2014/01/bundle-containskey-but-returns-null-on.html

https://www.codota.com/code/java/methods/android.os.Bundle/containsKey