1

AppWidgetProviderクラスで次のコードを実行しました:

@Override
    public void onUpdate(
....
  Intent mainIntent = new Intent(ctxt, MainActivity.class);
        mainIntent.putExtra("testExtra",true);
        PendingIntent pendingIntent = PendingIntent.getActivity(ctxt, 0, mainIntent, 0);
        widget.setOnClickPendingIntent(R.id.buttonAddwidget, pendingIntent);

...

test()このコードはメイン アクティビティのみを起動しますが、メイン アクティビティから関数を呼び出したいと考えています。
どうすればいいですか?
使おうとしているgetExtraのですが、うまくいきません。

4

1 に答える 1

1

putExtraおそらくブール値フラグなどを使用して、イベントにデータを追加してみませんか。

次にonCreate()、インテント ( を使用してアクセスできますgetIntent()) 内のデータの存在を確認し、存在する場合は関数を呼び出すことができます。

編集

onResume上記で提供した更新されたコード (余分なコードを含む) を使用すると、内の関数で次のようなものが必要になりますMainActivity.class

if (getIntent().getBooleanExtra("textExtra"))
    doSomeFunction();

getIntent()呼び出しの意図を与える必要があります。これが機能しない場合は、おそらくアクティビティの設定に関係しており、インテントを取得するためにメソッドをlaunchModeオーバーライドする必要がある場合があります。onNewIntent()

編集2

次のコードをアクティビティに追加してみてください。それが行うことは、アクティビティがインテントによって作成されていない時間を処理するため、新しいアクティビティ (エクストラを含む) ではなく、最初getIntent()にアクティビティを作成するために使用されたインテントを返します。インテントを新しいものに設定するので、そのエクストラにアクセスできます。onResume()

 @Override
 protected void onNewIntent(Intent intent) {
     //called when the activity is relaunched by a new intent
     setIntent(intent);
     super.onNewIntent(intent);
 }
于 2013-09-17T14:54:15.010 に答える