android intent传递null值

时间:2013-03-03 11:42:09

标签: android android-intent

我完全坚持解决我的问题。我已经尝试了所有可能的方法来完成它但是徒劳无功。请,任何人都看看下面的代码并帮助我... 我是android / java环境的新手。

我有活动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。现在请注意,数据库中的条目具有用户在alertdialog中提供的名称(字符串),现在我希望将相同的字符串传递给活动A:

单击SAVE BUTTON后

我的代码:

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

现在,intent已成功返回到活动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
    }

}

1 个答案:

答案 0 :(得分: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才能获取更改的文本值。否则它将为null。