有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android将意图从SherlockFragment传递到普通活动类

我试图将两个字符串传递到一个普通类中,但在尝试获取数据时出现了一个错误

            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) 个答案

  1. # 1 楼答案

    如果您可以从日志中提取异常堆栈跟踪,这将非常有用

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

    第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")抛出一个NullPointerException。我相信这是导致“不幸的是,你的应用程序已经停止”的例外情况

    张贴日志,看看我的理论是否成立