私は自分の問題を解決することに完全に立ち往生しています。私はそれを成し遂げるためにすべての可能な方法を試みましたが、無駄でした。どうか、誰かが次のコードを見て助けてくれます...私はandroid/java環境に不慣れです。
結果としてアクティビティBをトリガーするアクティビティAがあります。アクティビティ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に渡す必要があります。
[保存]ボタンをクリックした後の私のコード:
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」にnull値が含まれています。なぜかわからない???
これで、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
}
}