我完全坚持解决我的问题。我已经尝试了所有可能的方法来完成它但是徒劳无功。请,任何人都看看下面的代码并帮助我... 我是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
}
}
答案 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。