Передача значения из одной активности в другую в Android

Привет, я разработал приложение, в котором есть текстовое поле и кнопка поиска, когда я ввожу номер в текстовое поле и нажимаю кнопку поиска, чтобы передать значение, указанное в следующем действии, где оно использует это значение, чтобы получить значение Из базы данных.

Я использую следующий код для передачи значения.

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

Моя проблема в том, что она не передает значение. Может ли кто-нибудь помочь мне в этом, а также может any1 объяснить мне приведенный выше код, поскольку я не написал его, и мне трудно понять его.

Сторона 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) Почему вы пытаетесь начать работу дважды?

 startActivity(myIntent); // this is OK HomeActivity.this.startActivity(myIntent); 

2) Чтобы передать введенный текст из одной активности в другую, вы можете использовать putExtra() для Intent, например:

 myIntent.putExtra("SearchText", outlet_no); 

Таким образом, ваш полный код:

  Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); myIntent.putExtra("SearchText", outlet_no); startActivity(myIntent); 

3) Получить значение, которое вы перенесли из первого действия:

 Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String outlet_no= bundle.getString("SearchText"); 

4) SharedPreferences:

FYI, SharedPreference используется для сохранения небольшого количества данных, которые могут быть ссылкой и использованы позже в приложении.

Вы должны ссылаться ниже ссылок:

  1. SharedPreferences
  2. умысел
  3. Намеренные и интенсивные фильтры
 Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); myIntent.putExtra("searchString", outlet_no); startActivity(myIntent); 

Это отправит searchString в StoreActivity

И в StoreActivity вы можете получить значение, используя:

 String s = getIntent.getStringExtra("searchString"); 

В вашем методе onClick введите следующий код:

  String outlet_no = outlet_id.getText().toString(); if(!outlet_no.isEmpty()){ Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); myIntent.putExtra("outlet_id",outlet_no); startActivity(myIntent); } else{ Toast.makeText(getApplicationContext(), "Please enter an outlet id", Toast.LENGTH_SHORT); } 

Теперь в StoreActivity в методе onCreate () есть что-то вроде этого:

 String outlet_no = getIntent().getStringExtra("outlet_id"); if (outlet_no != null) //Just a defensive check //Start your processing 

Вы также можете сделать это с помощью намерений.

Скажем, у нас есть 2 действия: SourceActivity & DestinationActivity, и мы хотим передать значение SourceActivity для DestinationActivity

В вашей Button OnClickListener:

 String str_outlet_no = outlet_no.getText().toString(); Intent intent = new Intent(SourceActivity.this, DestinationActivity.class); intent.putExtra("outlet_no_key", outlet_no); startActivity(intent); 

А с другой стороны в DestinationActivity:

 Intent intent = getIntent(); String desi = intent.getStringExtra("outlet_no"); 

И поиск desi из базы данных

Вы можете попробовать что-то вроде этого:

Активность А

 myIntent.putExtra(var, value); // Putting the value startActivity(myIntent); 

Активность B

 String value = getIntent().getStringExtra(var); // Getting the value 

Самый простой способ сделать это – передать идентификатор сеанса в действие выведения в том намерении, которое вы используете для начала работы:

 Intent intent = new Intent(getBaseContext(), SignoutActivity.class); intent.putExtra("EXTRA_SESSION_ID", sessionId); startActivity(intent) 

Документы для намерений содержат дополнительную информацию (смотрите раздел «Дополнительно»).

Вы можете просто написать это как

 Intent myIntent = new Intent(HomeActivity.this, StoreActivity.class); myIntent.putExtra("outlet_no",outlet_no); startActivity(myIntent); 

Дайте мне знать, если это сработало или нет.

Активность А

 myIntent.putExtra(var, value); // Putting the value startActivity(myIntent); 

Активность B

 String value = getIntent().getStringExtra(var); // Getting the value