Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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
Android-通过intent传递具有不同键名的相同值_Android_Android Intent - Fatal编程技术网

Android-通过intent传递具有不同键名的相同值

Android-通过intent传递具有不同键名的相同值,android,android-intent,Android,Android Intent,我有两个活动活动A和地图活动B 在活动A中,我有两个文本视图,称为源和目标 当我单击SourceTextView时,会调用mapactivity B,并在textview中设置用户的当前位置。使用intent将结果传递给活动A,并在源文本视图中进行设置 单击目标文本视图时,如何执行相同的过程 是否可以使用不同的键名发送相同的值?由于我是android新手,非常感谢您的帮助。 谢谢。您可以在同一目的中添加许多额外内容 Intent i = new Intent(this, MapActivity.

我有两个活动
活动A
地图活动B

在活动A中,我有两个
文本视图
,称为源和目标

当我单击SourceTextView时,会调用mapactivity B,并在textview中设置用户的当前位置。使用intent将结果传递给活动A,并在源文本视图中进行设置

单击目标文本视图时,如何执行相同的过程

是否可以使用不同的键名发送相同的值?由于我是android新手,非常感谢您的帮助。
谢谢。

您可以在同一目的中添加许多额外内容

Intent i = new Intent(this, MapActivity.class);
i.putExtra("Value_1", "some data ");
i.putExtra("Value_2", "another data");

我认为这可以简单地做到。首先,将文本视图值转换为字符串。在需要的同一包中的所有活动中使用该字符串。确保字符串应声明为静态

public static String xyz;

是的,你可以。请按照下面的代码

在活动一中:

findViewById(R.id.tv_destination).setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
         intent.putExtra(ActivityTwo.KEY_ONE, "destination");
         startActivity(intent)
     }
});

findViewById(R.id.tv_source).setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
         intent.putExtra(ActivityTwo.KEY_TWO, "source");
         startActivity(intent)
    }
});
在活动二中:

public class ActivityTwo extends Activity {
public static final String KEY_ONE = "com.example.name.activity.KEY_ONE";
public static final String KEY_TWO = "com.example.name.activity.KEY_TWO";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    Bundle bundle = getIntent().getExtras();
    if(bundle.containsKey(KEY_ONE)){
        String destination = bundle.get(KEY_ONE);
    }
    if(bundle.containsKey(KEY_TWO)){
        String sourceAddress = bundle.get(KEY_TWO);
    }
}

工作完成:)

为两个请求创建两个整数常量,1。源地址和2。目的地址

final static int SOURCE_ADDRESS = 1;
final static int DESTINATION_ADDRESS = 2;
从MainActivity中,使用startActivityForResult()方法调用MapActivity

在侦听器中,根据EditText和

Intent i = new Intent(MainActivity.this, MapActivity.class);
switch(v.getId()){
     case R.id.source:
            startActivityForResult(i, SOURCE_ADDRESS);
            break;
     case R.id.destination:
            startActivityForResult(i, DESTINATION_ADDRESS);
            break;
在MapActivity中设置要返回到MainActivity的数据

  Intent returnIntent = new Intent();
  returnIntent.putExtra("address",result);
  setResult(Activity.RESULT_OK,returnIntent);
  finish();
现在,在MainActivity类中,为onActivityResult()方法编写以下代码


您可以使用
startActivityForResult
解决您的问题。
通过使用不同的请求代码来获取文本。

请阅读以下内容:@Saravanan Jaichandar希望这有助于>@Saravanan Jaichandar编辑您的问题一点只发布相关内容,而不是每个不必要的东西No bro wat我需要的是:Intent i=new(mapactivity.this,activityA);i、 putExtra(“源地址”,地址字符串);i、 putExtra(“DestinationAddress”,addressstring);tat是否可能???@Saravanan Jaichandar为什么要这样做,如果两个视图的值相同,则可以使用它,否则两个视图使用两个名称,否则如何确定哪个视图发送了数据?是的,您可以使用另一个键名传递相同的值。我使用了具有相同值的不同键,并执行了确切的过程,但我在两个textview中都得到了相同的答案设置bro@SaravananJaichandar有什么问题吗,如果您在每次出现时都100%得到相同的答案,并且如果您不需要识别它来自哪个视图,那么您可以使用一个键,否则使用两个键确定是。问题是如何识别或区分用户已单击源文本视图和目标文本视图,并在相应的文本视图中设置结果?
  @Override 
  protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
        if (resultCode == Activity.RESULT_OK) {
              String address=data.getStringExtra("address");
              if(requestCode ==  SOURCE_ADDRESS){ 
                      //Assign the address to source address TextView
              } else if (requestCode == DESTINATION_ADDRESS){
                     //Assign the address to destination address
              } 
         } else {
              //write code if no value is returned
         }
   }