我正在尝试将两个字符串传递给普通类,但是当我尝试获取数据时出现错误
final int a = i;
blogs[i].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(getActivity(), ReadBlog.class);
try {
i.putExtra("title", jsons[a].getString("title"));
i.putExtra("text", jsons[a].getString("text"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
startActivity(i);
Log.e("button", "blog clicked");
}
});
正常班级:
public class ReadBlog extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
//setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.readblog);
String title = "title";// intent.getStringExtra("title");
String text= "text";
text = getIntent().getExtras().getString("text");
TextView titlev = (TextView) findViewById(R.id.textView1);
titlev.setText(title);
TextView textv = (TextView) findViewById(R.id.textView2);
textv.setText(text);
}
}
ReadBlog
类在崩溃之前显示正确的文本一秒钟 - 没有错误消息,只是典型的Android实际上没有告诉您问题是什么。
那么我做错了什么?
07-24 22:12:37.130: E/pass 2.2(22138): blogs - connection success
07-24 22:12:37.800: E/button(22138): blog clicked
07-24 22:12:37.830: W/dalvikvm(22138): threadid=1: thread exiting with uncaught exception (group=0x40f21438)
我不认为数据结构是一个问题,因为当我将它打印到屏幕上时它工作正常,它只是意图无法工作。
答案 0 :(得分:0)
如果您可以从日志中提取异常堆栈跟踪,将会很有帮助。
我想我可以从代码中看出发生了什么,但这是一个猜测:
try {
i.putExtra("title", jsons[a].getString("title"));
i.putExtra("text", jsons[a].getString("text"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我的猜测是jsons[a].getString("title")
抛出异常或返回null。无论哪种方式,都不会向Intent
添加额外内容。意图可以很好地启动其他活动,但它没有额外的内容。
text = getIntent().getExtras().getString("text");
如果intent没有额外的内容,那么getExtras()
将返回null。因此,跟随它的.getString("text")
会抛出NullPointerExcpetion。我相信这是导致"不幸的是,您的应用已经停止。"。
发布你的logcat,我们会看看我的理论是否成立。