Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android intent.getStringExtra()返回null_Android_Android Intent - Fatal编程技术网

Android intent.getStringExtra()返回null

Android intent.getStringExtra()返回null,android,android-intent,Android,Android Intent,我真的觉得这很奇怪,我可以得到除一个以外的其他值。这是我的密码: Intent intent = new Intent(this.context, SecondActivity.class); intent.putExtra("contact", n.getContact()); intent.putExtra("email", n.getEmail()); intent.putExtra("address", n.getAddress()); intent.putExtra("test", "

我真的觉得这很奇怪,我可以得到除一个以外的其他值。这是我的密码:

Intent intent = new Intent(this.context, SecondActivity.class);
intent.putExtra("contact", n.getContact());
intent.putExtra("email", n.getEmail());
intent.putExtra("address", n.getAddress());
intent.putExtra("test", "hello world");
context.startActivity(intent);
这是我将在OnCreate()下获取值的代码:

除了字符串
测试
之外,其他一切都正常工作。它总是给我空值。有什么解决办法吗

问题补充: intent.putExtra()是否不再接受第二个参数上的带引号的文本?LOL

发送数据

Intent intent  = new Intent(this.context,SecondActivity.class);
                intent.putExtra("contact", n.getContact());
                startActivity(intent);
获取数据

Bundle data = getIntent().getExtras();
contact = data.getString("contact");
在课堂上

Intent myIntent=new Intent(MainActivity.this, ResultActivity.class);
Bundle bundle=new Bundle();
bundle.putString("contact", n.getContact());
bundle.putString("email", n.getEmail());
bundle.putString("address", n.getAddress());
bundle.putString("test", "hello world");
myIntent.putExtra("MyPackage", bundle);
startActivity(myIntent);
Intent callerIntent=getIntent();
Bundle packageFromCaller=
callerIntent.getBundleExtra("MyPackage");
String contact =packageFromCaller.getString("contact");
String email =packageFromCaller.getString("email");
String address= packageFromCaller.getString("address");
String test= packageFromCaller.getString("test");
在ResultActivity.class中

Intent myIntent=new Intent(MainActivity.this, ResultActivity.class);
Bundle bundle=new Bundle();
bundle.putString("contact", n.getContact());
bundle.putString("email", n.getEmail());
bundle.putString("address", n.getAddress());
bundle.putString("test", "hello world");
myIntent.putExtra("MyPackage", bundle);
startActivity(myIntent);
Intent callerIntent=getIntent();
Bundle packageFromCaller=
callerIntent.getBundleExtra("MyPackage");
String contact =packageFromCaller.getString("contact");
String email =packageFromCaller.getString("email");
String address= packageFromCaller.getString("address");
String test= packageFromCaller.getString("test");

希望。它将帮助你

使用getApplicationContext()而不是this.context并使用startActivity而不是context.startActivity

第一项活动

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("test", "hello world");
startActivity(intent);
第二项活动

Intent intent = getIntent();
intent.getStringExtra("test");
您需要在每个putExtra上添加.toString()和方法调用的结尾

Intent intent = new Intent(this.context, SecondActivity.class);
intent.putExtra("contact", n.getContact().toString());
intent.putExtra("email", n.getEmail().toString());
intent.putExtra("address", n.getAddress().toString());
intent.putExtra("test", "hello world");
context.startActivity(intent);

您确定n.getContact和其他方法没有返回null吗?非常确定。这就是为什么我想知道为什么特定的行返回null,它给了我一个值。最近刚试过。这真的很奇怪,我以前也这么做过。我不知道为什么那一行给我空值。我想知道如何将描述放在API中:
将扩展数据添加到意图中。名称必须包含程序包前缀,例如,应用程序com.android.contacts将使用类似“com.android.contacts.ShowAll”的名称。
我在添加程序包前缀时从未添加过程序包前缀,但效果很好……这是什么意思?您尝试过更改顺序吗?我的意思是,只需切换最后的语句,它仍然是
test
您没有得到的,还是
address
?试试看……请看我的解释。我知道如何传递数据。您不应该使用
Bundle
,因为我们使用
Intent
来放置一些数据。