捆绑到 MainActivity.java

bundles to MainActivity.java

所以我在 main activity 中有一个回收器视图,一旦我点击一个元素,我就可以转到另一个屏幕并使用 bundle 发送信息(例如回收器中元素的名称单击的视图)。一切正常。

现在我正在尝试返回到主 activity 并将信息发送到主 activity,这些信息将显示在 Toast

这是我第二次activity回去的一部分

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);
            }

这就是我在主要 activity 中用于在 oncreate 方法中检索它的方法

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

我对它发表了评论,因为它崩溃了。我的猜测是它崩溃是因为程序第一次启动时没有 bundle ,没有来自第二次的信息 activity.

我可以反过来做(从主要activity到第二activity)

怎么办?

在访问包中的参数之前尝试执行空检查。

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
    }
}

此外,它有助于 post logcat 以便我们可以看到崩溃的根源。

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

你的FirstActivity(不清楚activity的名字是什么)你应该这样使用它。

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