2013-03-03 57 views
0

我完全沉浸在解決我的問題。我嘗試了所有可能的方式來完成它,但徒勞無功。請,任何人都看看下面的代碼,並幫助我... 我是新來android/java環境。android intent傳遞null值

我有活動A從哪裏我觸發活動B的結果。活動B是用戶必須填寫的表格,並且必須通過按下表格上的「保存按鈕」來提交。表單中的數據存儲在數據庫中(工作正常),並且活動B以字符串(由用戶提供)返回到活動A

當它返回到活動A時,應該使用列表視圖用該字符串的值更新。

這裏是我的代碼:

從A開始的意圖:

Intent ccard_intent= new Intent(this, create_ccard.class); 
startActivityForResult(ccard_intent,start_activity_for_ccard); 
break; 

上面的代碼工作正常。活動B開始(其具有要由用戶填寫的表格)

在活動B中,在用戶填寫表格後,他按下保存按鈕。 條目存儲在Db中,並提示用戶輸入該特定條目的名稱。我已經使用了alertdialog。現在注意的是,在DATABSE中的條目具有在alertdialog,現在我想相同的字符串傳遞到活動A的用戶提供的名稱(字符串):

點擊保存按鈕後

我的代碼:

case R.id.Ccard_save_btn: 

    //do operations 

CcardString =myobj.toString(); 

AlertDialog.Builder save_btn_builder = new AlertDialog.Builder(this); 
save_btn_builder.setTitle("Enter the Card Name"); 
final EditText input= new EditText(this); 
    save_btn_builder.setView(input); 

    save_btn_builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 

    public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 

     Card_name=input.getText().toString(); 
     myDatabse mydb = new myDatabse(getBaseContext()); 
     mydb.open(); 
      mydb.insertCard(Card_name, type, CcardString); 

      mydb.close(); 


    //i have intent declared at the begining along with along with Card_name 

     i.putExtra("card_name", Card_name); 

     setResult(Activity.RESULT_OK); 


     finish(); 
    } 
}); 

    save_btn_builder.show(); 

現在,意圖成功返回到活動A,但在「card_name」中具有空值! 我不知道爲什麼?

現在我的onActivityResult代碼:

protected void onActvityResult(int requestCode, int resultCode, Intent data){ 

    super.onActivityResult(requestCode, resultCode, data); 

Log.d("activity ccards", "in on activity resume"); 
    if(requestCode == 788 && resultCode== RESULT_OK){ 
new_ccard = data.getStringExtra("card_name"); 
    ccards_arraylist.add(new_ccard); 

    adapter3.notifyDataSetChanged(); 

    //adapter3 is the adapter for the listview 
    } 

} 
+0

首先檢查存儲在意圖第一 – 2013-03-03 11:51:20

+0

我應該怎麼做? – user2056245 2013-03-03 11:52:16

+0

我在Activity中使用Toasts進行了檢查,它返回null! – user2056245 2013-03-03 11:52:44

回答

0

你從來沒有設置一個值的變量輸入。那麼如何:

Card_name=input.getText().toString(); 

返回一個值?

你可以嘗試這樣的事:

input.addTextChangedListener(new TextWatcher() 
{ 

    public void afterTextChanged(Editable s) 
    { 

    } 

    public void beforeTextChanged(CharSequence s, int start, 
    int count, int after) 
    { 

    } 

    public void onTextChanged(CharSequence s, int start, 
    int before, int count) 
    { 
     Card_name=input.getText().toString(); 
    } 
}); 

你必須有textWatcher得到改變文本值。否則它將爲空。

+0

「輸入」中的文本必須由用戶自己輸入。 – user2056245 2013-03-03 12:48:51

+0

已更新我的答案。請祝你好運。 – lokoko 2013-03-03 12:55:55

+0

我認爲是什麼,我在Card_name中獲取字符串時沒有問題,我使用Toast進行了檢查,而且,我使用了相同的名稱來將該卡存儲在我的數據庫中,這也正常工作。錯誤是通過意圖傳遞字符串,而不是獲取字符串值。 – user2056245 2013-03-03 13:21:55