Android - 将Intent从SherlockFragment传递到普通的Activity类

时间:2014-07-24 20:02:51

标签: java android android-intent android-fragments

我正在尝试将两个字符串传递给普通类,但是当我尝试获取数据时出现错误

            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)

我不认为数据结构是一个问题,因为当我将它打印到屏幕上时它工作正常,它只是意图无法工作。

1 个答案:

答案 0 :(得分:0)

如果您可以从日志中提取异常堆栈跟踪,将会很有帮助。

我想我可以从代码中看出发生了什么,但这是一个猜测:

第1部分:原因

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添加额外内容。意图可以很好地启动其他活动,但它没有额外的内容。

第2部分:效果

text = getIntent().getExtras().getString("text");

如果intent没有额外的内容,那么getExtras()将返回null。因此,跟随它的.getString("text")会抛出NullPointerExcpetion。我相信这是导致"不幸的是,您的应用已经停止。"。

发布你的logcat,我们会看看我的理论是否成立。