web-dev-qa-db-ja.com

バンドルから文字列を取得Androidはnullを返します

あるアクティビティから別のアクティビティに文字列を渡したいのですが、そのうちの1つで

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);

そして今それは動作します

8
Emy Alsabbagh

この方法を試してください

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");
21
Senthil

を使用する代わりに、他のアクティビティで

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

使ってみてください

filename = b.getString("filename");

それはあなたの問題を解決するはずです。

1
dberm22

問題は、pdfView()では、intent.putExtra("filename", f);と記述されていることです。

toString()(つまり、intent.putExtra("filename", f.toString());に変換してみてください

そしておそらく、明示的なインテントへのBundleの送信をスキップできます。

0