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
}
}