2015-11-05 2 views
1

Возможно, кто-то может мне помочь. Я хотел бы передать две строки из другой деятельности. Это код, где я генерировать строки:Передача строк другой активности в Android

private void contactPicked(Intent data) { 
    Cursor cursor = null; 
    try { 
     String phoneNo = null; 
     String name = null; 

     // getData() method will have the Content Uri of the selected contact 
     Uri uri = data.getData(); 

     //Query the content uri 
     cursor = getContentResolver().query(uri, null, null, null, null); 
     cursor.moveToFirst(); 
     // column index of the phone number 
     int phoneIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
     // column index of the contact name 
     int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
     phoneNo = cursor.getString(phoneIndex); 
     name = cursor.getString(nameIndex); 
     // Set the value to the textviews 
     textView1.setText(name); 
     textView2.setText(phoneNo); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Я хотел бы передать PHONENO и имя моей MainActivity

Я пытался сделать SharedPreference и загружать DefaultSharedPreference в моем MainAcitivity без результата

+0

Возможный дубликат [Как вы передаете данные/параметры на другой вид деятельности в Android] (http://stackoverflow.com/questions/6340423/how-do-you-pass-data-parameters- to-another-activity-in-android) – starkshang

ответ

0

Добавьте это в коде

Intent intent = new Intent(activity1.this, activity2.class); 
intent.putExtra("key", keyId); 
startActivity(intent); 

и получить его как от второй деятельности

Bundle extras = getIntent().getExtras(); 
String value; 
if (extras != null) { 
value = extras.getString("key"); 
} 
+0

Что я делаю: я перехожу из MainActivity в ContactActivity (там, где строки), где я выбираю контакт. Когда я делаю startActivity (намерение) в моей ContactActivity, чем программа снова открывает MainActivity. – bfmv991

0

в текущей деятельности добавить следующее:

Intent intent = new Intent(context, MainActivity.class); 
intent.putExtra("PHONE", phoneNo); 
intent.putExtra("NAME", Name); 
startActivity(intent); 

в основной деятельности добавить следующее:

Intent intent = getIntent(); 
String phonNo = intent.getStringExtra("PHONE"); 
String Name = intent.getStringExtra("Name"); 
+0

Что я делаю: я перехожу из MainActivity в ContactActivity (там, где строки), где я выбираю контакт. Когда я делаю startActivity (намерение) в моей ContactActivity, чем программа снова открывает MainActivity. – bfmv991

0

Вы можете использовать Намерение

// для передачи данных от одного вида деятельности к другому через Намерение

Intent intent = new Intent(getApplicationContext(),MainActivity.class); 
intent.putExtra("phone", phoneNo); 
intent.putExtra("name", name); 
startActivity(intent); 

// Для получения данных в другой деятельности

Intent intent = getIntent(); 
String phonNo = intent.getStringExtra("phone"); 
String name = intent.getStringExtra("name"); 
+0

Что я делаю: я перехожу из MainActivity в ContactActivity (там, где строки), где я выбираю контакт. Когда я делаю startActivity (намерение) в моей ContactActivity, чем программа снова открывает MainActivity. – bfmv991

+0

что такое проблема? –

+0

он не должен открыть MainActivity?Я просто хочу сохранить телефонNo и имя где-нибудь, чтобы я мог прочитать их в моей MainAcitivity, а не swap-активности, когда я загружаю контакт в свой ContactActivity ?? – bfmv991

0

Гадания из ваших комментариев, которые вы хотите передать строки, как только вы закрываете свой ContactActivity без открытия снова MainActivity (не добавляя его в стек).

Вы можете начать активность и ждать результата, поэтому в главном изменении активности

startActivity(intent); 

для

startActivityForResult(i, REQUEST_CODE); 

Тогда в вашем ContactActivity вы можете настроить свой результат, как следующее:

intent = new Intent(); 
    intent.putExtra("PHONE", phoneNo); 
    intent.putExtra("NAME", Name); 
    setResult(RESULT_OK, intent); 

И в onActivityResult вы можете реализовать onActivityResult для извлечения е данные

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
     if(requestCode == REQUEST_CODE){ 

      if(resultcode == RESULT_OK){ 
       String phoneNo = data.getStringExtra("PHONE"); 
       String name = data.getStringExtra("NAME"); 
       //do whatever you want 
      }else{ 
       //do something else 
      } 
     } 
    } 
+0

поэтому в ContactActivity я делаю: 'Intent intent = new Intent (getApplicationContext(), MainActivity.class); intent.putExtra («ТЕЛЕФОН», номер телефона); intent.putExtra ("NAME", имя); startActivityForResult (i, REQUEST_CODE); ' и в MainActivity я вызываю onActivityResult? – bfmv991

+0

В ContactActivity вы используете намерение, когда я отправляю сообщение. установка MainActivity.class не требуется. SetResult вернет намерение с дополнительными функциями в MainActivity, как только ContactActivity будет уволен. И вам не нужно вызывать onActivityResult, просто реализовать его. Он будет вызываться, когда он получит результат –

Смежные вопросы