1

私のバンドルは、含まれているエクストラに対して null 文字列を返します。NPE ではなく、実際の「null」値。なぜこれが起こるのかについてのアイデアはありますか?

新しいバンドル

                        String u = null;
                        Bundle b = new Bundle();
                        Intent i = new Intent(view.getContext(), ******.class);
                        u = api.companyData.link.get(position);
                        Log.d("URL++++++++++++++++++++", u);
                        b.putString("graphic", api.companyData.graphic);
                        b.putString("name", api.companyData.name);
                        b.putString("url", u);
                        i.putExtras(b); 
                        startActivity(i);

ログステートメントは URL を正常に返しています。

バンドルの受信者

   Bundle extras = getIntent().getExtras();
    if(extras !=null) {
         Log.d("EXTRAS", extras.getString("name")+extras.getString("graphic")+extras.getString("link"));

D/EXTRAS (4698): nullnullnull

4

2 に答える 2

1

オブジェクトをインテントに直接配置します。

Intent i = new Intent(view.getContext(), ******.class);
i.putExtra("graphic", ...);
i.putExtra("name", ...);
i.putExtra("url", ....);

次に、レシーバー アクティビティで次のようにします。

getIntent().getStringExtra("graphic");
getIntent().getStringExtra("name");
getIntent().getStringExtra("url");
于 2012-06-30T22:59:35.583 に答える
1

私はいつもこのようにしています:

Intent i = new Intent(view.getContext(), ******.class);
i.putExtra("url", u);

その後

String url = getIntent().getStringExtra("url");

あなたのやり方で試したことはありませんが、Android のドキュメントを見ると、次のように書かれputExtras(Bundle)ています。

インテントに一連の拡張データを追加します。キーにはパッケージ プレフィックスを含める必要があります。たとえば、アプリ com.android.contacts は「com.android.contacts.ShowAll」のような名前を使用します。

あなたがそれをしていないことが、失敗の原因かもしれません。

于 2012-06-30T23:02:30.190 に答える