1

私のフラグメントには、ボタンがあり、ボタンが押されると、次の方法でカスタム インテントをブロードキャストします。

package com.my.store.fragments.shopping;

public class ShoppingFragment extends Fragment{
    ...
    @Override
    public void onStart(){
       super.onStart()

       myButton.setOnClickListener(new OnClickListener(){
             @Override
             public void onClick(View v){
                broadcastMyIntent(v);
             }
       });
    }

    public void broadcastMyIntent(View view){
     Intent intent = new Intent();
     intent.setAction("com.my.store.fragments.shopping.CUSTOM_INTENT");
     getActivity().sendBroadcast(intent);
    }
}

次に、ブロードキャスト レシーバーを定義しました。

package com.my.store.utils;

public class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Receive my intent", Toast.LENGTH_LONG).show();
    }
}

レシーバーをAndroidManifest.xmlに登録します。

<application
    ...>
    <activity ...>
       ...
    </activity>

    <!--this is the receiver which doesn't work-->
    <receiver android:name="com.my.store.utils.MyReceiver"> 
          <action android:name="com.my.store.fragments.shopping.CUSTOM_INTENT"/>
    </receiver>

    <!--I have another receiver here, it is working fine-->
   <receiver android:name="com.my.store.utils.AnotherReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
</application>

アプリを実行し、ボタンを押してもレシーバーが呼び出されません。なんで?

4

3 に答える 3

2

<action>要素を<intent-filter>コンテナで囲むのを忘れました。

于 2013-07-08T14:06:22.003 に答える
0

AndroidManifest.xml

<!--this is the receiver which doesn't work-->
<receiver android:name="com.my.store.utils.MyReceiver"> 
  <intent-filter>
   <action android:name="com.my.store.fragments.shopping.CUSTOM_INTENT"/>
  </intent-filter>
</receiver>
于 2013-07-08T14:12:08.610 に答える