我有两项活动Activity A
和MapActivity B
。
在活动A中,我有两个textviews
名为来源和目的地
当我点击源文本视图时,会调用mapactivity B并在texview中设置用户当前位置。结果使用intent传递给Activity A,并在源textview中设置。
单击目标文本视图时如何执行相同的过程?
是否可以使用意图中的不同键名发送相同的值?由于我是Android的新手,所以感谢您的帮助。 感谢。
答案 0 :(得分:0)
你可以在同一个意图中添加许多额外内容。
Intent i = new Intent(this, MapActivity.class);
i.putExtra("Value_1", "some data ");
i.putExtra("Value_2", "another data");
答案 1 :(得分:0)
我认为这可以简单地完成。首先,将该文本视图值转换为字符串。在您需要的同一个包中的所有活动中使用该字符串。确保该字符串应声明为static。
public static String xyz;
答案 2 :(得分:0)
是的,你可以。请按照以下代码进行操作。
在ActivityOne
:
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)
}
});
在ActivityTwo
:
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);
}
}
完成工作:)
答案 3 :(得分:0)
为您的两个请求创建两个整数常量,1。源地址和2.目标地址
final static int SOURCE_ADDRESS = 1;
final static int DESTINATION_ADDRESS = 2;
从MainActivity中使用startActivityForResult()方法调用MapActivity
在你的监听器中,根据EditText
的资源ID调用它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()方法编写以下代码。
@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
}
}
答案 4 :(得分:0)
您可以使用startActivityForResult
来解决问题。
通过使用不同的请求代码来获取该文本。