如何在 activity 重启时将 intent extras 传递给 onactivityresult?
How to pass intent extras to onactivityresult when activity reboot?
我正在编写 android 应用程序。需要通过 int value.I 有一个列表视图,它有 contextmenu.I 必须启动 Intent.Action_Call。当我开始我的意图时。我的应用程序将进入后台。意图完成后,我的应用程序开始 survey.My 问题是;我没有得到用户 "s clicked position.I tried insert to putExtra but in onActivityResult void does not accepted value of my user" 的点击位置和值变成 zero.How 我能得到吗?
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
selectedPosition = info.position;
//in here , this value is true.
Toast.makeText(AnaMenu.this, String.valueOf(selectedPosition), Toast.LENGTH_LONG).show();
switch (item.getItemId()) {
case MENU_Ara:
Intent i = getIntent();
final ArrayList<String> secilmis = i.getStringArrayListExtra("listem");
Intent ara = new Intent(Intent.ACTION_CALL);
ara.setData(Uri.parse("tel:" + secilmis.get(info.position).toString()));
ara.putExtra("selected", selectedPosition);
startActivityForResult(ara, AnketDegerlendirmesi);
return true;
}
return super.onContextItemSelected(item);
}
protected void onActivityResult(final int requestCode, int resultCode, final Intent data) {
if (requestCode == AnketDegerlendirmesi){
Toast.makeText(AnaMenu.this,String.valueOf(selectedPosition),Toast.LENGTH_LONG).show();
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(AnaMenu.this);
mBuilder.setTitle("Deger");
mBuilder.setIcon(R.drawable.ic_build_black_24dp);
mBuilder.setMultiChoiceItems(afteractivitydialogitems, dialogcheckeditems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int position, boolean isChecked) {
if (isChecked){
mUserselecteditems.add(Integer.valueOf(dialogdegerleri[position]));
}
if (!isChecked) {
if (mUserselecteditems.contains(Integer.valueOf(dialogdegerleri[position]))){
mUserselecteditems.remove(Integer.valueOf(dialogdegerleri[position]));
}
}
}
});
mBuilder.setCancelable(false);
mBuilder.setPositiveButton("Tamamdır.", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String items = "";
toplamaislemi = 0;
for (int item : mUserselecteditems) {
items += "-" + item + "\n";
toplamaislemi = toplamaislemi + item;
//When i want to get this value.Value is always zero(0)
String returnString = data.getStringExtra("selected");
kullanıcısayıdegerlistesi.remove(String.valueOf(returnString));
kullanıcısayıdegerlistesi.add(Integer.valueOf(returnString),String.valueOf(toplamaislemi));
oyunTextView.notifyDataSetChanged();
}
} ) .show();
}
super.onActivityResult(requestCode, resultCode, data);
}
听起来您希望能够这样调用:
Intent i = new Intent(...);
i.putExtra("some_key", someValue);
startActivityForResult(i, requestCode);
稍后,当您收到结果时:
protected void onActivityResult(... Intent data) {
data.getExtra("some_key"); // should be `someValue` from above
}
不幸的是,这不是它的工作原理。 onActivityResult()
的 Intent data
参数与您用来启动 activity 的 Intent
不同。您启动的 activity 可以完全控制 data
意图是否为非空以及其中的内容。
通常对于 public API,有关于您可以期望在 data
意图中包含的内容的文档。
首先,把这个放在onContextItemSelected
SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.clear();
editor.putInt("kelime", selectedPosition);
editor.commit();
在cod上面安顿下来后,设置onActivityResult
SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
int selec = settings.getInt("kelime",selectedPosition);
最后,将适配器设置为相同的 void :
kullanıcısayıdegerlistesi.remove(selec);
kullanıcısayıdegerlistesi.add(selec ,String.valueOf(sonuc));
我正在编写 android 应用程序。需要通过 int value.I 有一个列表视图,它有 contextmenu.I 必须启动 Intent.Action_Call。当我开始我的意图时。我的应用程序将进入后台。意图完成后,我的应用程序开始 survey.My 问题是;我没有得到用户 "s clicked position.I tried insert to putExtra but in onActivityResult void does not accepted value of my user" 的点击位置和值变成 zero.How 我能得到吗?
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
selectedPosition = info.position;
//in here , this value is true.
Toast.makeText(AnaMenu.this, String.valueOf(selectedPosition), Toast.LENGTH_LONG).show();
switch (item.getItemId()) {
case MENU_Ara:
Intent i = getIntent();
final ArrayList<String> secilmis = i.getStringArrayListExtra("listem");
Intent ara = new Intent(Intent.ACTION_CALL);
ara.setData(Uri.parse("tel:" + secilmis.get(info.position).toString()));
ara.putExtra("selected", selectedPosition);
startActivityForResult(ara, AnketDegerlendirmesi);
return true;
}
return super.onContextItemSelected(item);
}
protected void onActivityResult(final int requestCode, int resultCode, final Intent data) {
if (requestCode == AnketDegerlendirmesi){
Toast.makeText(AnaMenu.this,String.valueOf(selectedPosition),Toast.LENGTH_LONG).show();
final AlertDialog.Builder mBuilder = new AlertDialog.Builder(AnaMenu.this);
mBuilder.setTitle("Deger");
mBuilder.setIcon(R.drawable.ic_build_black_24dp);
mBuilder.setMultiChoiceItems(afteractivitydialogitems, dialogcheckeditems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int position, boolean isChecked) {
if (isChecked){
mUserselecteditems.add(Integer.valueOf(dialogdegerleri[position]));
}
if (!isChecked) {
if (mUserselecteditems.contains(Integer.valueOf(dialogdegerleri[position]))){
mUserselecteditems.remove(Integer.valueOf(dialogdegerleri[position]));
}
}
}
});
mBuilder.setCancelable(false);
mBuilder.setPositiveButton("Tamamdır.", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String items = "";
toplamaislemi = 0;
for (int item : mUserselecteditems) {
items += "-" + item + "\n";
toplamaislemi = toplamaislemi + item;
//When i want to get this value.Value is always zero(0)
String returnString = data.getStringExtra("selected");
kullanıcısayıdegerlistesi.remove(String.valueOf(returnString));
kullanıcısayıdegerlistesi.add(Integer.valueOf(returnString),String.valueOf(toplamaislemi));
oyunTextView.notifyDataSetChanged();
}
} ) .show();
}
super.onActivityResult(requestCode, resultCode, data);
}
听起来您希望能够这样调用:
Intent i = new Intent(...);
i.putExtra("some_key", someValue);
startActivityForResult(i, requestCode);
稍后,当您收到结果时:
protected void onActivityResult(... Intent data) {
data.getExtra("some_key"); // should be `someValue` from above
}
不幸的是,这不是它的工作原理。 onActivityResult()
的 Intent data
参数与您用来启动 activity 的 Intent
不同。您启动的 activity 可以完全控制 data
意图是否为非空以及其中的内容。
通常对于 public API,有关于您可以期望在 data
意图中包含的内容的文档。
首先,把这个放在onContextItemSelected
SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.clear();
editor.putInt("kelime", selectedPosition);
editor.commit();
在cod上面安顿下来后,设置onActivityResult
SharedPreferences settings = getSharedPreferences("PREFS_NAME", MODE_PRIVATE);
int selec = settings.getInt("kelime",selectedPosition);
最后,将适配器设置为相同的 void :
kullanıcısayıdegerlistesi.remove(selec);
kullanıcısayıdegerlistesi.add(selec ,String.valueOf(sonuc));