2015-11-05 81 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和我MainAcitivity加载DefaultSharedPreference没有任何结果

+0

的可能的复制[您如何传递数据/参数,在Android的另一个活动(http://stackoverflow.com/questions/6340423/how-do-you-pass-data-parameters-到另一个活动在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(intent)时,程序会再次打开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(那是字符串是)我选择一个联系人。当我在我的ContactActivity中执行startActivity(intent)时,程序会再次打开MainActivity。 – bfmv991

0

您可以使用意向

//从一个活动到其他数据传递via Intent

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(那是字符串是)我选择一个联系人。当我在我的ContactActivity中执行startActivity(intent)时,程序会再次打开MainActivity。 – bfmv991

+0

然后是什么问题? –

+0

它不应该打开MainActivity?我只想保存手机号码和姓名,以便我可以在MainAcitivity中读取它们,而不是在我的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(“PHONE”,phoneNo); intent.putExtra(“NAME”,name); startActivityForResult(i,REQUEST_CODE);' 和MainActivity我打电话onActivityResult? – bfmv991

+0

在ContactActivity中,您使用我发布的意图。设置MainActivity.class不是必需的。一旦ContactActivity被解散,setResult将返回带有额外元素的intent到MainActivity。你不必调用ActivityResult,只需实现它。它会在收到结果时被调用 –

相关问题