问题描述
- intent.getExtras();报空指针
-
错误的重点是:**把最后Activity接收Activity1传来的数据代码,放在一个按钮中就完全正确,但是要是放在onCreate中,就崩溃报空指针**
程序先是Activity跳到Activity1,然后从Activity1中获取字符串传递回Activity中。
下面是Activity跳转到Activity1的代码:
Intent intent=new Intent();
intent.setClass(MainActivity.this,MainActivity1.class);
startActivity(intent);
MainActivity.this.finish();
下面是Activity1向Activity传递数据的代码:
String orgin = orginEdit.getText().toString();
String destination = destinationEdit.getText().toString();Intent intent=new Intent();
Bundle orgin1 = new Bundle();
Bundle destination1 = new Bundle();
orgin1.putString("orgin1", orgin);
destination1.putString("destination1",destination);
intent.putExtras(orgin1);
intent.putExtras(destination1);
startActivity(intent);
下面是Activity接收数据的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
Bundle og = intent.getExtras();
Bundle de = intent.getExtras();
String orgin1 = og.getString("orgin1");//???????????????????????????????????????????????????
String destination1 = de.getString("destination1");
将这段接收数据的代码放在一个按钮中就没有任何问题,可以正常执行,但是放在onCreate中,getExtras就报空指针
Manifest文件如下:
android:name="com.example.citysearch_duty.MainActivity"
android:label="@string/app_name" ><category android:name="android.`intent`.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.citysearch_duty.MainActivity1" android:label="@string/title_activity_main_activity1" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
第一次提问,不懂格式,多多谅解~~请各位帮忙解答一下,小女子在此拜谢~~
解决方案
请使用一个Bundle
Bundle bundle= new Bundle();
bundle.putString("orgin1", orgin);
bundle.putString("destination1",destination);
取值的时候就只需要取一次getExtras().
解决方案二:
写了一个例子可以看看
活动的代码:
public class TestBundle extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onTouchEvent(MotionEvent event) {
Intent intent = new Intent();
intent.setClass(TestBundle.this, Target.class);
Bundle mBundle = new Bundle();
mBundle.putString("Data", "我是上一个activity发送的数据");//压入数据
intent.putExtras(mBundle);
startActivity(intent);
finish();
return super.onTouchEvent(event);
}
}
跳转到的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle bundle = getIntent().getExtras();
String data=bundle.getString("Data");//读出数据
setTitle(data);
}
解决方案三:
我遇到了 intent2=new Intent();//因为没有实例化 所以会造成bundle 空指针
intent2.putExtras(mBundle2);