您好,我开发了一个应用程序,它有一个文本框和一个搜索按钮,当我在文本框中输入一个数字并单击搜索按钮时,它需要将输入的值传递给它使用该值的下一个 Activity 从数据库中获取值。
我正在使用以下代码传递值。
search_button.setClickable(true);
search_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String outlet_no = outlet_id.getText().toString();
System.out.println(outlet_no);
if(!outlet_no.isEmpty()){
@SuppressWarnings("deprecation")
SharedPreferences myPrefs = getApplicationContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("outlet_id", outlet_no);
prefsEditor.commit();
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);
startActivity(myIntent);
HomeActivity.this.startActivity(myIntent);
}
else{
Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT);
}
}
});
我的问题是它没有传递值。谁能帮我解决这个问题,谁能解释一下上面的代码,因为我没有写它,我发现它很难理解。
StoreActivity 端
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.store);
myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
mOutletID = myPrefs.getString("outlet_id", "0");
mOutletDetails = myPrefs.getString("outlet_details","{}");
Log.v("outlet_details",myPrefs.getString("outlet_details","{}"));
if(mOutletDetails != "{}"){
setOutletData(mOutletDetails);
}
else{
executeAjaxRequest();
}
}
最佳答案
你犯的错误:
1) 为什么要尝试启动 Activity 两次?
startActivity(myIntent); // this is OK
HomeActivity.this.startActivity(myIntent);
2) 要将输入的文本从一个 Activity 传递到另一个 Activity ,您可以使用 Intent 的 putExtra()
方法,例如:
myIntent.putExtra("SearchText", outlet_no);
所以你的完整代码是:
Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class);
myIntent.putExtra("SearchText", outlet_no);
startActivity(myIntent);
3) 接收您从第一个 Activity 传递的值:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String outlet_no= bundle.getString("SearchText");
4) 共享首选项:
仅供引用,SharedPreference
用于保存少量数据,供以后跨应用程序引用和使用。
您应该引用以下链接:
关于android - 在android中将值(value)从一个 Activity 传递到另一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996597/