【发布时间】:2016-08-08 12:28:45
【问题描述】:
一旦在另一个视图文件中调用方法,我想取消隐藏 TextView。 TextView 在 MainActivity 中。
为此,我打算将 View 文件中的广播发送到 MainActivity,但没有成功。
我将如何实现这一目标?
【问题讨论】:
标签: java android view broadcastreceiver main-activity
一旦在另一个视图文件中调用方法,我想取消隐藏 TextView。 TextView 在 MainActivity 中。
为此,我打算将 View 文件中的广播发送到 MainActivity,但没有成功。
我将如何实现这一目标?
【问题讨论】:
标签: java android view broadcastreceiver main-activity
步骤 0:定义一个动作:
public static final String ACTION_SHOW_TEXT= "showText";
第 1 步:在 MainActivity 中创建广播接收器:
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (myText != null) {
myText.setVisibility(View.VISIBLE);
}
}
};
第 2 步:在 MainActivity 中添加注册和注销事件:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocalBroadcastManager.getInstance(this)
.registerReceiver(mReceiver, new IntentFilter(ACTION_SHOW_TEXT));
}
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(mReceiver);
}
第 3 步:当您想显示 TextView 时,从任何地方调用:
Intent i = new Intent(MainActivity.ACTION_SHOW_TEXT);
i.putExtra("success", true);
LocalBroadcastManager.getInstance(this)
.sendBroadcast(i);
}
【讨论】:
LocalBroadcastManager.getInstance(this).sendBroadcast(i);,我得到 LocalBroadcastManager 无法应用于 com.simon.engine.com.FILE_WHERE_I_WANT_TO_DISPLAY_TEXTVIEW。我该如何解决这个问题?谢谢!
LocalBroadcastManager.getInstance(this) 将 Context 作为参数。因此,如果您处于零碎状态,请致电LocalBroadcastManager.getInstance(getContext())