在两个活动之间传递数据的问题

时间:2012-10-05 14:55:26

标签: android android-intent android-activity

这是我的onCreate()方法。我试图将一个变量从一个意图传递给这个意图。这很好。当我按下后退按钮并返回到先前更改值的意图时,应用程序崩溃。而且当我改变方向时,应用程序崩溃了。我在pp.getData()方法中得到“Nullpointer异常”。它将null参数传递给函数。我怎么能克服这个?我是否需要添加任何其他详细信息?

public void onCreate(Bundle savedInstanceState) {

    // get intent data
    Intent i = getIntent();

    setQuery(i.getExtras().getString("query"));
    Log.v("query:", getQuery());

    userquery = getQuery();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.product_view_layout);

    try {
        pp = new Parser(userquery);
        productData = pp.getData(asynctask, userquery);
    } catch (URISyntaxException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mProductViewPagerAdapter = new ProductViewPagerAdapter(
            getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mProductViewPagerAdapter);

}

2 个答案:

答案 0 :(得分:0)

如果Intent中不存在“查询”附加内容,则会返回null。您应该执行空检查以确保没有获得nullPointerException

String query = i.getExtras().getString("query"));

if(query == null) {
    setQuery("");
}
else {
    setQuery(query);
}

答案 1 :(得分:0)

如果您想在第一个活动中收到结果,您必须使用此“

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{

 }

当你开始第一个活动时,你必须启动它startActivityForResult。 在后面将结果设置为RESULT_OK或RESULT_CANCEL。看一下开发者android的活动。