问题
I want to unhide a TextView once a method is called in another View file. The TextView is in MainActivity.
For this, I am planning to send a broadcast from the View file to MainActivity, but it didn't work.
How would I achieve this?
回答1:
Step 0 : Define an action :
public static final String ACTION_SHOW_TEXT= "showText";
Step 1 : Create your Broadcast receiver in your MainActivity :
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (myText != null) {
myText.setVisibility(View.VISIBLE);
}
}
};
Step 2 : Add the register and unregister events in your 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);
}
Step 3 : Whenever you want to display your TextView, call from anywhere :
Intent i = new Intent(MainActivity.ACTION_SHOW_TEXT);
i.putExtra("success", true);
LocalBroadcastManager.getInstance(this)
.sendBroadcast(i);
}
来源:https://stackoverflow.com/questions/36665670/android-sending-a-broadcast-to-mainactivity-and-then-showing-a-textview