2014-03-26 54 views
-1

我對android開發非常陌生,在編寫聯繫簿的代碼時遇到了問題。我的問題是:如何從其他活動獲取數據..在android ..?

我有兩個activity類(main_activityaddcontact_activity),在main_activity ----一個buttonlistview和一個EditText,如果我在button點擊然後重定向到第二個活動,並在第二項活動 - 三防editText(用於姓名,電話號碼和電子郵件)和兩個button S(保存和清除)

在第一項活動一切正常,但當我從第二活動點擊保存button然後將其鏈接到Main_activity但數據從發送第一次活動的第二次活動,它不顯示在main_activity s o請幫忙!

代碼Main_activity:用於addContact_activity

EditText t; 
Button b; 
ListView lv; 
ArrayList <String> al; 
ArrayAdapter<String> ad; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    t=(EditText)findViewById(R.id.editText1); 
    b=(Button)findViewById(R.id.button1); 
    lv=(ListView)findViewById(R.id.listView1); 
    b.setOnClickListener(this); 



    al=new ArrayList<String>(); 
    ad=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,al); 
    lv.setAdapter(ad); 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    if(v.getId()==R.id.button1){ 
     Intent link = new Intent(getApplicationContext(),addcontact.class); 
     startActivity(link); 
    } 
} 


@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    Intent Info = getIntent(); 
    al.add(Info.getStringExtra("name").toString()); 
    ad.notifyDataSetChanged(); 

} 

}

代碼:

TextView name,phone,email; 
Button save, reset; 
EditText n,p,e; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addcon); 

    name=(TextView)findViewById(R.id.textView1); 
    phone=(TextView)findViewById(R.id.textView2); 
    email=(TextView)findViewById(R.id.textView3); 

    save=(Button)findViewById(R.id.save); 
    save.setOnClickListener(this); 
    reset=(Button)findViewById(R.id.button2); 

    n=(EditText)findViewById(R.id.editText1); 
    p=(EditText)findViewById(R.id.editText2); 
    e=(EditText)findViewById(R.id.editText3); 


} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
     if(v.getId()==R.id.save){ 
     Intent send = new Intent(getApplicationContext(),MainActivity.class); 
     send.putExtra("name", n.getText().toString()); 
     startActivity(send); 

    } 
} 

}

+0

請點擊此鏈接: - http://stackoverflow.com/問題/ 10407159/Android的是如何管理的啓動活動換重sult –

回答

0

在你的情況,你正在使用Intent發送數據到另一個activity,正確因此通過:

Intent send = new Intent(getApplicationContext(),MainActivity.class); 
      send.putExtra("name", n.getText().toString()); 
      startActivity(send); 

現在,爲了檢索數據,你需要從Intent得到MainActivity,通過:

getIntent().getStringExtra("name"); 

把那個放在onCreate()MainActivity

在讀取您的數據之前插入空檢查...對於Intent,因此它不會拋出NPE。
喜歡的東西:

if(getIntent()!=null || getIntent().getExtras()!=null) 

更多的Intents上:

http://developer.android.com/reference/android/content/Intent.html
What is an Intent in Android?

+0

非常感謝您的支持...... !!!!! –

0

試試這個..

做下面的代碼裏面OnCreate()

Intent Info = getIntent(); 
al.add(Info.getStringExtra("name").toString()); 
ad.notifyDataSetChanged(); 

代碼

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    t=(EditText)findViewById(R.id.editText1); 
    b=(Button)findViewById(R.id.button1); 
    lv=(ListView)findViewById(R.id.listView1); 
    b.setOnClickListener(this); 



    al=new ArrayList<String>(); 
    ad=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,al); 
    lv.setAdapter(ad); 
    Intent Info = getIntent(); 
    if(Info.hasExtra("name")){ 
     al.add(Info.getStringExtra("name").toString()); 
     ad.notifyDataSetChanged(); 
    } 
} 
+0

感謝您的答案..但是當我將代碼寫入OnCreate()的Main活動時,它會給出一個錯誤,因爲在第一次運行主活動時,它不會獲取任何Intent信息,以便爲什麼此代碼不會運行.. !!!!! –

+0

@ user3462608看到我編輯的代碼。我用'if(Info.hasExtra(「name」))''試試它。 – Hariharan

+0

感謝man..its workinggg .... !!!!!!! –

0

使用getInent()。getExtras()來獲得束。 或getIntent()。getExtra();

0

上添加的onResume(此代碼),而不是在暫停

Intent Info = getIntent(); 
    al.add(Info.getStringExtra("name").toString()); 
    ad.notifyDataSetChanged(); 
0
Intent i = new Intent(this, ActivityTwo.class);//this your current class 
startActivity(i); 
to pass a value in class 1 

Intent i = new Intent(this, ActivityTwo.class); 
i.putExtra("Value1", "This value one for ActivityTwo "); 
i.putExtra("Value2", "This value two ActivityTwo"); 

    // to get values from ActivityTwo.class 

Bundle extras = getIntent().getExtras(); 
if (extras == null) { 
    return; 
} 
// get data via the key 
String value1 = extras.getString(Intent.EXTRA_TEXT); 
if (value1 != null) { 
    // do something with the data 
} 
相關問題