0

これは私がやっていることです:

を使用しMainActvityてからインテントを送信しています。Fragment クラスのコードを書きました。でレシーバーの登録を解除しています。FragmentLocalBroadcastManageronReceive()onCreateView()onDestroy()

しかしonReceive()、呼び出されていません。なんで?

MainActivityクラス:

   void handleText()
{ 
          Intent i = new Intent("receiveURL");
          i.putExtra("key", sharedText);

          this.sendBroadcast(i);
}

私のフラグメントクラスで:

public class AddTab extends Fragment implements View.OnClickListener {

    BroadcastReceiver  receiver;

    EditText textBox;

        @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_add, container, false);

        textBox = (EditText) view.findViewById(R.id.editText);

        receiver = new BroadcastReceiver() {
//This is not getting called
            @Override
            public void onReceive(Context context, Intent intent) {
                String g = intent.getStringExtra("key");
                textBox = (EditText) getView().findViewById(R.id.editText);
                if (textBox != null){
                    textBox.setText(g);}
                else{
                    Log.d("NULL", "");
                }

                Log.d("received","");
                }
            };

      LocalBroadcastManager.getInstance(getActivity()).registerReceiver(receiver, new IntentFilter("receiveURL"));
...
//some code
    }


    public void onDestroy() {


         super.onDestroy();
         LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(receiver);
    }

}

その受信者が呼び出されないのはなぜですか? 何か助けてください。

4

2 に答える 2

2

によって受信されないグローバルなアプリ間ブロードキャストthis.sendBroadcast(i)を送信するを使用しています。LocalBroadcastManager

MainActivityで、置き換えます

this.sendBroadcast(i);

LocalBroadcastManager.getInstance(this).sendBroadcast(i);

これは機能します。

于 2015-03-24T12:41:40.137 に答える
0

onPause() から受信者の unregister() を削除することで、私の問題は解決しました。

于 2017-08-16T08:43:39.353 に答える