2 sueis sueis 于 2013.07.25 21:18 提问

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>

第一次提问,不懂格式,多多谅解~~请各位帮忙解答一下,小女子在此拜谢~~

3个回答

shaojie519
shaojie519   2013.07.25 22:05

请使用一个Bundle
Bundle bundle= new Bundle();
bundle.putString("orgin1", orgin);
bundle.putString("destination1",destination);
取值的时候就只需要取一次getExtras().

shaojie519
shaojie519 onCreate里不行的话,在onNewIntent()方法里试试。
接近 5 年之前 回复
sueis
sueis 嗯,改成一个Bundle了,不过问题没有解决,同样的一段接收代码,放在按钮中,就可以接受上一个Activity传来的数据,直接放在onCreate中就不行,这是怎么回事?
接近 5 年之前 回复
lori_xj
lori_xj   2013.07.25 22:45

写了一个例子可以看看
活动的代码:
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);

}

lori_xj
lori_xj 你先打个断点,看一看在哪里出错!
接近 5 年之前 回复
sueis
sueis 就是跳转到的代码出现问题,把代码放在一个开关按钮中,就运行正常接收数据,但是直接放在onCreate中,就报空指针...
接近 5 年之前 回复
u012844574
u012844574   2015.03.29 16:10

我遇到了 intent2=new Intent();//因为没有实例化 所以会造成bundle 空指针

    intent2.putExtras(mBundle2);
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Intent获取值的时候空指针错误
在使用Intent进行界面之间的传值的时候,传入的方式如下: Intent i = new Intent(this, OtherScreen.class); i.putExtra("id1", "first"); startActivity(i);然后在新界面当中获取值的时候采用getExtras()的方式,就会报空指针的异常,代码如下: String resul
jsp中调用dao的getHibernateTemplate()时,报空指针
jsp中调用dao的getHibernateTemplate()时,报空指针
Bundle bundle = this.getIntent().getExtras();含义
Bundle bundle = this.getIntent().getExtras(); getIntent得到一个Intent,是指上一个activity启动的intent,这个方法返回intent对象,然后调用intent.getExtras()得到intent所附带的额外数据
junit测试报空指针异常
今天进行junit测试的时候出现了下面的错误(单纯进行某个某个方法出现下面的错误,如果都某个类进行测试,还不会出现) 下面给出解决方案 1.首先把junit4.4.jar的包 Remove 掉 2.然后 Add Library 选择如下 4.点击Next  最后点击选择  Junit4   最后OK 问题就解决了 (网上也有说,把Junit的包排到前面也可以解决该
Socket连接时Input.available()报空指针错误
在使用socket获取输入流读取数据时,总是提示空指针。获取输入流getInputstream()和创建socket是在一个线程中执行,又创建一个线程处理输入流中的数据。然后就会报错。 public class ReceiveThread implements Runnable { @Override public void run() { while (true) {
使用@Autowired 报空指针解决方案
使用@Auarowired时程序报空指针。如图:
求解,sendmessage()异常报空指针详细说明如下
多的不说上图吧 这部分是代码,问题主要报的位置在那个sendmessage()那里; 下面的图是报错内容,前面是注释掉那句的打印信息
xutils找id报空指针异常
xutils找id报空指针异常,遇到这个问题看子页面是否没有加入 这行代码ViewUtils.inject(this, mHomeView); @ViewInject(R.id.flash_view)private FlashView flashView;
启动tomcat——空指针异常
java.lang.NullPointerException at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) //参考一: 查询资料,原因是项目jar包和tomcat的jar包冲突了。不兼容。 删除工程里的jsp-api.jar和servlet-api.jar两个jar包,这种解决方案是对的,但是删除完这
null和“”调用方法都会报空指针吗
今天和同事谈论关于空指针的简单问题,条件是一个EditText获取输入的值,当没有输入值的时候,editText.getText();返回的是什么? 打印出来后,才发现并不是Editable对象,而是一个空字符串,空字符串调用方法的时候,是不会报空指针的,只有null调用方法才会报空指针。