android - 向 MainActivity 发送广播,然后显示 TextView

Posted

技术标签:

【中文标题】android - 向 MainActivity 发送广播,然后显示 TextView【英文标题】:android - Sending a broadcast to MainActivity and then showing a TextView 【发布时间】:2016-08-08 12:28:45 【问题描述】:

一旦在另一个视图文件中调用方法,我想取消隐藏 TextView。 TextView 在 MainActivity 中。

为此,我打算将 View 文件中的广播发送到 MainActivity,但没有成功。

我将如何实现这一目标?

【问题讨论】:

【参考方案1】:

步骤 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()) 干得好,尼古拉斯!我给了你最多 25 点声望点。周末愉快!

以上是关于android - 向 MainActivity 发送广播,然后显示 TextView的主要内容,如果未能解决你的问题,请参考以下文章

Android - 向通知添加意图

android 动态设置布局宽度

通过(From)AsyncTask 向 MainActivity 发送意图

通过Android应用程序向Apache服务器发送请求,摆脱无限循环

无法向 Mainactivity 添加操作,因为它不支持操作

Android之MainActivity类