捆绑到 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
所以我在 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