如何在android中的活动之间发送消息

时间:2015-06-19 23:35:18

标签: android

我的应用程序的工作方式如下:用户点击撰写按钮并键入消息,然后将其发送到主活动,并在回收者视图中显示日期和时间,刷卡更像facebook或任何其他类型的社交媒体。我遇到的问题是我对Android开发相当新,并且在谷歌网站上没有看到任何东西。

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  • 在意图中发送您的数据:

用这个" put"文件......

Intent i = new Intent(FirstScreen.this, SecondScreen.class);   
String keyIdentifer  = null;
i.putExtra("STRING_I_NEED", strName);

然后,要检索值,请尝试以下内容:

String newString;
if (savedInstanceState == null) {
    Bundle extras = getIntent().getExtras();
    if(extras == null) {
        newString= null;
    } else {
        newString= extras.getString("STRING_I_NEED");
    }
} else {
    newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}

答案 1 :(得分:1)

或者您可以尝试使用EvenBus库(有几种实现方式) 在活动中传递消息非常容易,而不仅仅是活动。这是一个简单的例子。

public class MessageEvent {
    private String message;
    private Date date;
    public MessageEvent(String message,Date date){          
        this.date = date;
        this.message = message;
    }

    public Date getDate(){
        return this.date;
    }
}

在活动注册听力活动

公共类MessageHandlerActivity扩展了Activity {

private EventBus bus = EventBus.getDefault();

@Override
protected void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);
    bus.register(this);
}   

@Override
protected void onDestroy() {
    // Unregister
    bus.unregister(this);
    super.onDestroy();
}

public void onEvent(MessageEvent event){    //随心所欲地做你想做的事 } }

并使用以下方法通知总线上的所有订户。

 bus.post(event);

但请注意,在这种情况下,假定活动正在运行(已创建),例如,如果您正在使用嵌套片段或其他内容。如果您只需要将当前活动更改为新活动,则必须遵循常用方法 - 将意图与bundle一起使用以传递新活动初始化所​​需的一些数据。
您可以在官方文档中阅读此内容 Starting Another Activity

答案 2 :(得分:0)

SendingActivity

Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value);  // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);

RecievingActivity

 Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName"); // retrieve the data using keyName 

接收数据的另一种方式

 String data = getIntent().getExtras().getString("AnyKeyName");

您还可以使用Parcelable

发送对象