Android:将邮件从类传递到片段

时间:2017-06-21 11:11:19

标签: java android multithreading android-fragments fragment

我不久前也遇到过类似的问题,但写得不是很好,也改变了我的结构。

在片段中单击按钮时,我正在向类发送消息。有问题的类是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");
        }
    };
}

这里没有记录任何内容。邮件未发送过来。

如果有人能给我一些关于如何使这个工作的提示那么好。我也觉得这不是最好的方法,因为我最终可能会通过这里发送大量数据。

如果可以,我该如何改进呢?

感谢。

1 个答案:

答案 0 :(得分:0)

我个人不喜欢这种方法,我建议使用BroadcastRecieverEventBus在Android应用的各个部分之间进行通信

有关详细信息,请参阅thisthis