未调用 LocalBroadcastManager onReceive()
LocalBroadcastManager onReceive() not called
这就是我正在做的事情:
我正在使用 LocalBroadcastManager
从 MainActvity
向我的 Fragment
发送一个意图。我在片段 class 的 onCreateView()
中编写了 onReceive()
代码。我正在 onDestroy()
.
注销接收器
但是 onReceive()
没有被调用。为什么?
在 MainActivity class 中:
void handleText()
{
Intent i = new Intent("receiveURL");
i.putExtra("key", sharedText);
this.sendBroadcast(i);
}
在我的 片段 class 中:
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);
}
}
为什么收件人没有收到电话?有什么帮助吗?
您正在使用 this.sendBroadcast(i)
,它发送 全局 应用程序间广播,LocalBroadcastManager
.
不会接收到该广播
在你的MainActivity
中,替换
this.sendBroadcast(i);
和
LocalBroadcastManager.getInstance(this).sendBroadcast(i);
这会起作用。
我的问题在从 onPause() 中删除接收器 unregister() 时得到解决。
这就是我正在做的事情:
我正在使用 LocalBroadcastManager
从 MainActvity
向我的 Fragment
发送一个意图。我在片段 class 的 onCreateView()
中编写了 onReceive()
代码。我正在 onDestroy()
.
但是 onReceive()
没有被调用。为什么?
在 MainActivity class 中:
void handleText()
{
Intent i = new Intent("receiveURL");
i.putExtra("key", sharedText);
this.sendBroadcast(i);
}
在我的 片段 class 中:
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);
}
}
为什么收件人没有收到电话?有什么帮助吗?
您正在使用 this.sendBroadcast(i)
,它发送 全局 应用程序间广播,LocalBroadcastManager
.
在你的MainActivity
中,替换
this.sendBroadcast(i);
和
LocalBroadcastManager.getInstance(this).sendBroadcast(i);
这会起作用。
我的问题在从 onPause() 中删除接收器 unregister() 时得到解决。