0

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

我有活动 A,我从那里触发活动 B 以获得结果。活动 B 是用户必须填写的表单,并且必须通过按表单上的“保存按钮”来提交它。表单中的数据存储在数据库中(工作正常),活动 B 使用字符串(由用户提供)返回活动 A

当它返回 Activity A 时,应该使用该字符串的值更新列表视图。

这是我的代码:

从 A 开始意图:

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

上面的代码工作正常。活动 B 开始(其中有一个由用户填写的表格)

在活动 B 中,用户填写表单后,他按下保存按钮。这些条目存储在 Db 中,它会提示用户为该特定条目指定一个名称。我已经为此目的使用了警报对话框。现在请注意,数据库中的条目具有用户在 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
    }

}
4

1 回答 1

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 才能获取更改后的文本值。否则它将为空。

于 2013-03-03T12:31:05.513 回答