Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:将消息从类传递到片段_Java_Android_Multithreading_Android Fragments_Fragment - Fatal编程技术网

Java Android:将消息从类传递到片段

Java Android:将消息从类传递到片段,java,android,multithreading,android-fragments,fragment,Java,Android,Multithreading,Android Fragments,Fragment,不久前我有一个类似的问题,但写得不太好,也改变了我的结构 当在片段中单击按钮时,我正在向类发送消息。所讨论的类是MessageInterface(实际上不是接口) 我现在想把这个消息发送到另一个片段,并更新其中的一些文本。以下是我迄今为止所做的工作 这是MessageInterface类,它成功地接收了消息,我用日志证明了这一点 public class MessageInterface { private String message; private static M

不久前我有一个类似的问题,但写得不太好,也改变了我的结构

当在片段中单击按钮时,我正在向类发送消息。所讨论的类是MessageInterface(实际上不是接口)

我现在想把这个消息发送到另一个片段,并更新其中的一些文本。以下是我迄今为止所做的工作

这是MessageInterface类,它成功地接收了消息,我用日志证明了这一点

   public class MessageInterface {

    private String message;
    private static MessageInterface instance = new MessageInterface();
    private Message msg =  new Message();
    private Handler handler;
    private Bundle bundle;

    public MessageInterface() {

    }

    public static MessageInterface getInstance() {
        return instance;
    }

    public void sendData(final String str) {
        bundle = new Bundle();
        handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() {
                message = str;
                if (!message.isEmpty()){
                    Log.i("Interface", "Message Revieved in Interface");
                    bundle.putString("Message", message );
                    msg.setData(bundle);
                    handler.sendMessage(msg);
                }
            }
        });
    }

    public String getData() {
        return message;
    };

}
这是接收片段中的代码:

private MessageInterface messageInterface = MessageInterface.getInstance();
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onActivityCreated(savedInstanceState);
    super.onActivityCreated(savedInstanceState);

    statusText = (TextView) getActivity().findViewById(R.id.statusText);

    handler2 = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            Bundle bundle = msg.getData();
            statusText.setText((bundle.getString("Message")));
            Log.i("Status", "Message Revieved in Status Fragment");
        }
    };
}
这里没有任何记录。消息没有被发送过来

如果有人能给我一些关于如何让这个工作的建议,那就太好了。我也觉得这不是最好的方法,因为我可能会在这里发送大量数据

如果可以的话,我怎么能改进它呢


谢谢。

我个人不喜欢这种方法,我建议使用
广播接收器
s或
事件总线
在android应用程序的各个部分之间进行通信


有关更多详细信息,请参见和

EventBus looks Interest。我去看看。ThanksHi我得到了这个错误:只有创建视图层次结构的原始线程才能接触它的视图。我在一个在自己线程上工作的类中创建了一个新的EventBus事件。如何访问UI线程上的消息。请阅读有关您的评论的文章