我已将源地址和目标地址创建为两个编辑文本,其中我从另一个活动中放置了源地址和目标地址,但是当回来放置第二个值时,第一个或第二个值将被删除。当将第一个值放入第一个编辑文本并打算从另一个活动中放置另一个值时,第一个值将被删除。
我已经尝试过Sharedpreferences,但是对于这一点,它的效果并不理想。
这是我的代码。
Intent intent = getIntent();
String source = intent.getStringExtra("place");
search.setText(source);
Intent intent1 = getIntent();
String dest = intent1.getStringExtra("my1dest");
desti.setText(dest);
swap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s1 = search.getText().toString();
String s2 = desti.getText().toString();
if (!s1.isEmpty() && !s2.isEmpty()) {
desti.setText(s1);
search.setText(s2);// this for swap the values source to destination viceversa
}
}
});
从这个adpter类中,我正在传递值
Intent intent=new Intent(context,MainActivity.class);
intent.putExtra("place",searchlist.getPlaces());
intent.putExtra("dest",searchlist.getPlaces());
intent.putExtra("lat",searchlist.getLat());
intent.putExtra("lang",searchlist.getLang());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent);
请对此概念提出想法,谢谢。.
答案 0 :(得分:1)
如果您要保存从两个不同活动传递的值,则应该具有一种机制来保存第一个值,然后再从另一个活动中获取其他值。
问题是您要用相同的意图(来自同一活动的意图)替换值:
Intent intent = getIntent(); //if this is intent from your MainActivity
String source = intent.getStringExtra("place"); //you will get this value
search.setText(source);
Intent intent1 = getIntent(); //and this as well is intent from same activity (MainActivity)
String dest = intent1.getStringExtra("my1dest"); //you will not get this value as this is not passed from MainActivity
desti.setText(dest);
解决方案可能是将一个值保存到SharedPreference或任何其他均值(数据库或网络),并从其他意图中获取其他值:您应检查该值是否为null,然后不要替换它。 喜欢:
Intent intent = getIntent(); //if this is intent from your MainActivity
String source = intent.getStringExtra("place"); //you will get this value
if(source.isNotEmpty){
//save to preferences and set text
search.setText(source);
}
Intent intent1 = getIntent(); //if this is intent from your otherActivity
String dest = intent1.getStringExtra("my1dest");
if(dest.isNotEmpty){
//save to preferences and set text
desti.setText(dest);
}