我的一个小例子想要实现这样的功能:
从一个名为ActivitytestActivity的activity中点击一个按钮,跳转到名为OtherActivity的activity。
然后点击OtherActivity中的一个按钮再回到ActivitytestActivity这个activity中。并且向ActivitytestActivity中传递一个字符串信息“123456789”,并且显示在这个activity中的一个textview上。一下是我的代码:
ActivitytestActivity.java
package cn.edu.imut.activitytest;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;public class ActivitytestActivity extends Activity {
Button bt1;
TextView text;
String number = new String(); /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView) findViewById(R.id.text);
bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(ActivitytestActivity.this,
OtherActivity.class);
startActivityForResult(intent, 1);
}
});
} protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case 1:
System.out.println("onActivityResult");
Bundle bundle = data.getExtras();
number = bundle.getString("number");
//System.out.println(number);
if (!("".equals(number)))
text.setText(number);
break;
default:
break;
}
}
}OtherActivity.javapackage cn.edu.imut.activitytest;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class OtherActivity extends Activity {
Button bt1; public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
bt1 = (Button) findViewById(R.id.bt1);
bt1.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(OtherActivity.this,
ActivitytestActivity.class);
Bundle b = new Bundle();
b.putString("txt", "123456789");
intent.putExtras(b);
setResult(1,intent);
finish();
}
});
}
}
xml代码我不贴了,就是这个简单的程序,却总是报出空指针异常。也就是说ActivitytestActivity中获取的number始终是null,这个是为什么,请大神帮忙解决啊,很急。09-18 18:35:55.340: E/AndroidRuntime(10204): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=1, data=Intent { cmp=cn.edu.imut.activitytest/.ActivitytestActivity (has extras) }} to activity {cn.edu.imut.activitytest/cn.edu.imut.activitytest.ActivitytestActivity}: java.lang.NullPointerException

解决方案 »

  1.   

    b.putString("txt", "123456789");这里面名字是"txt",
    而你number = bundle.getString("number");
      

  2.   

    键值对,存储内容,键名要一样
      Bundle b = new Bundle();
                    b.putString("txt", "123456789");
    保存的键名为txt
    而获取的键名为
    bundle.getString("number");当然不存在number的键名数据了,需要修改成相同键名