3

しばらくの間、単純な 1 つのStringデータを からServicewithActivityに渡そうとしていますIntent.putExtra()が、成功していません。Intent.getStringExtra()いつもNULL

サービスコード:

Intent intent=new Intent(getBaseContext(),MainActivity.class);
intent.putExtra(Consts.INTERNET_ERROR, "error");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);

活動コード:

public void onResume() {

    super.onResume();

    Intent i = getIntent();
    String test = "temp";
    Bundle b = i.getExtras();
    if (b != null) {
        test = b.getString(Consts.INTERNET_ERROR);
    }
}   

助言がありますか?

4

4 に答える 4

6

上記の私のコメントを詳しく説明するために、getIntent は [1] http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent) [1 ] に記載されている元の意図を返します。

サービスからのインテントは、onResume の前に呼び出される onNewIntent を介してアクティビティに渡されます。したがって、onNewIntent をオーバーライドすると、意図した文字列が得られます。

@Override
protected void onNewIntent(Intent intent)
{
    super.onNewIntent(intent);

    // set the string passed from the service to the original intent
       setIntent(intent);

}

次に、コード onResume が機能します。

于 2013-02-05T03:15:29.833 に答える
0

サービスコードのどこにを追加するかわかりませんStringが、次のコードを実行して文字列を送信できます。

Intent intent=new Intent(getBaseContext(),MainActivity.class);
Bundle b = new Bundle();
b.putString(Consts.INTERNET_ERROR, "Your String Here");
intent.putExtras(b);
intent.setAction(Consts.INTERNET_ERROR);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplication().startActivity(intent);
于 2013-02-04T22:50:18.133 に答える
0

最初に: コードを onResume から onStart に移動してみてください:

public void onStart() {

    super.onStart();

    Intent i = getIntent();
    String test = "temp";
    Bundle b = i.getExtras();
    if (b != null) {
        test = b.getString(Consts.INTERNET_ERROR);
    }
}  

それでもうまくいかない場合は、これを試してください:

最初のアクティビティ:

Intent myIntent = new Intent(firstActivity.this, secondActivity.class);
myIntent.putExtra("mystring",strValue)' <=your String
startActivity(myIntent);

2 番目のアクティビティ:

 String str = getIntent.getExtras().getString("mystring");<=get string 

ここでいくつかの情報を確認してください。

Android アプリケーションのアクティビティ間でデータを渡すにはどうすればよいですか?

于 2013-02-05T01:53:51.290 に答える
0

呼ぶのではなく

extras.getString();

電話してみてください:

intent.getStringExtra("key");

また、サービスから直接アクティビティを開始してますか? それとも、すでにアクティビティを実行していて、単にサービスからデータを受け取りたいですか?

于 2013-02-05T02:05:52.907 に答える