从bundle获取字符串android返回null

时间:2013-04-08 13:57:26

标签: android android-activity bundle

我想将一个字符串从一个活动传递到另一个活动,其中一个是我写的

public void pdfView(File f){

 // f is: /data/data/com.example.iktabClasses/files/fileName.pdf

 Intent intent = new Intent(getApplicationContext(),NewPdfActivity.class);

 intent.putExtra("filename", f);

    startActivity(intent);

}

在我写的另一个活动中:

  Bundle b=getIntent().getExtras();

        if (b != null) {

        filename = getIntent().getStringExtra("filename");

       System.out.println("filename: "+filename);
    } 

但文件名始终返回为“null”。 怎么解决这个? 提前致谢。 //////////////////

我把它作为

   Intent intent;
    Bundle b = new Bundle();

    b.putString("filename", f.toString());

    intent = new Intent(getApplicationContext(),NewPdfActivity.class);

    intent.putExtras(b);

    startActivity(intent);

现在可行了

3 个答案:

答案 0 :(得分:21)

试试这种方式

Intent intent = new Intent(first.this, second.class);

Bundle bundle = new Bundle();
bundle.putInt("index", index);

intent.putExtras(bundle);startActivity(intent);

然后将其作为

Bundle b = getIntent().getExtras();
int index = b.getInt("index");

答案 1 :(得分:1)

在您的其他活动中,而不是使用

filename = getIntent().getStringExtra("filename");

尝试使用

filename = b.getString("filename");

这应该可以解决你的问题。

答案 2 :(得分:0)

问题是,在pdfView()中,它写为intent.putExtra("filename", f);

尝试将其转换为toString()(即intent.putExtra("filename", f.toString());

也许您可以跳过将Bundle发送到明确意图的情况。