使用intent的putExtra使用相同的键值发送数据

时间:2013-05-22 09:30:19

标签: android-intent android-activity message-passing

我想使用Intents打开一个Activity按照以下代码:

Intent i=new Intent("com.example.learn.CONNECTION");
@Override
protected void onCreate(Bundle savedInstanceState) {
            .
            .
            .
    server=(Button) findViewById(R.id.Server);
    client=(Button) findViewById(R.id.Client);
    server.setOnClickListener(new OnClickListener(){

        public void onClick(View v) {

                i.putExtra("check", "server");
                startActivity(i);

            // TODO Auto-generated method stub
        }
    });

client.setOnClickListener(new OnClickListener(){

    public void onClick(View v) {
          i.putExtra("check1","client");        
      startActivity(i);

}

}); 现在在这个连接活动中,我正在检查它:

if(getIntent().hasExtra("check"))
        value = getIntent().getExtras().getString("check");
    if(getIntent().hasExtra("check1"))
        value = getIntent().getExtras().getString("check1");

但代码无法接收客户端或服务器。如何解决这个问题还有其他方法吗?任何其他与此代码无关的建议也将被接受。

2 个答案:

答案 0 :(得分:1)

亲爱的,你犯了一个错误。您提供的示例通常用于启动Web URL。 如果你想开始另一个意图,那么你将不得不改变第一行。

Intent intent = new Intent(CurrentActivity.this , NextActivity.class);

请试试。

答案 1 :(得分:0)

不要使用不同的变量,如“check”或“check 1”使用标志。此代码将保存您的问题

server.setOnClickListener(new OnClickListener(){

  public void onClick(View v) {

            i.putExtra("check", "server");
            startActivity(i);

        // TODO Auto-generated method stub
    }
});

client.setOnClickListener(new OnClickListener(){

public void onClick(View v) {
      i.putExtra("check","client");        
      startActivity(i);

}

在您的下一个活动中,只需使用此代码即可。

value = getIntent().getStringExtra("check");
if(value.equals("server")){
//server code
}
else if(value.equals("client")){
//client code
}

如果您的服务器和客户端值是动态的,您也可以以相同的方式使用一些布尔标志。