android - Sending a broadcast to MainActivity and then showing a TextView

[亡魂溺海] 提交于 2019-12-18 07:22:27

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!