У меня есть startActivityForResult(), вызывающий действие под названием FlavorList, которое является списком, заполненным из базы данных. Я хочу, когда я нажимаю на элемент в списке, чтобы он возвращался к активности (EditRecipe), которая вызывала его с данными. startActivityForResult() вызывается из метода showAddFlavorDialog() в EditRecipe, который открывает диалоговое окно предупреждения. Когда я нажимаю на элемент в FlavorList, он просто сидит и ничего не делаетВторое действие, вызванное из startActivityForResult, не закрывающее
showAddFlavorDialog() в EditRecipe, который вызывает startActivityForResult() и onActivityResult:
protected void showAddFlavorDialog(){
LayoutInflater layoutInflater = LayoutInflater.from(EditRecipe.this);
View promptView = layoutInflater.inflate(R.layout.add_recipe_flavor_alert, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(EditRecipe.this);
alertDialogBuilder.setView(promptView);
final EditText percentageET = (EditText) promptView.findViewById(R.id.is_flavorpercentage);
final TextView flavorNameTV = (TextView) promptView.findViewById(R.id.txt_flavor_name);
final TextView flavorVendorTV = (TextView) promptView.findViewById(R.id.txt_flavor_vendor);
final LinearLayout flavorLayout = (LinearLayout) promptView.findViewById(R.id.add_flavor_layout);
flavorLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(EditRecipe.this, FlavorList.class);
request_Code = 1;
startActivityForResult(i, request_Code);
if(tempFlavorName != null) {
flavorNameTV.setText(tempFlavorName);
flavorVendorTV.setText(tempFlavorVendor);
}
}
});
alertDialogBuilder.setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
addFlavorAlert = alertDialogBuilder.create();
addFlavorAlert.show();
}//end showAddFlavorDialog
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == request_Code)
{
if(resultCode == RESULT_OK)
{
Bundle extras = getIntent().getExtras();
tempFlavorName = extras.getString("FLAVOR_NAME");
tempFlavorVendor = extras.getString("FLAVOR_VENDOR");
tempFlavorWeight = extras.getDouble("FLAVOR_WEIGHT");
}
}
}
Слушатель для ListView в FlavorList.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long viewId) {
Cursor cursor = (Cursor) listView.getItemAtPosition(position);
_id = dbManager.getFlavorID(cursor);
flavorName = dbManager.getFlavorName(cursor);
flavorVendor = dbManager.getFlavorVendor(cursor);
flavorBase = dbManager.getFlavorBase(cursor);
flavorWeight = String.valueOf(dbManager.getFlavorWeight(cursor));
int callingActivity = getIntent().getIntExtra("CALLING_ACTIVITY", 0);
switch (callingActivity) {
case (Constants.FROM_MAIN):
showModifyDialog();
break;
case (Constants.FROM_EDIT_RECIPE):
Intent returnIntent = new Intent();
returnIntent.putExtra("FLAVOR_NAME", flavorName);
returnIntent.putExtra("FLAVOR_VENDOR", flavorVendor);
returnIntent.putExtra("FLAVOR_WEIGHT", flavorWeight);
setResult(RESULT_OK, returnIntent);
finish();
break;
}//end switch-case
}
});
Перед тем, как закончить(), войдите в свой футляр (Constants.FROM_EDIT_RECIPE) и проверьте, где находится программа или нет. –
Когда вы делаете свое намерение, Intent i = new Intent (EditRecipe.this, FlavorList.class); , вы не добавляете лишний. Затем в FlavorList вы запрашиваете дополнительную «CALLING_ACTIVITY». Я думаю, что int callActivity возвращает ноль, потому что намерение не может найти CALLING_ACTIVITY. Поэтому ваш оператор switch не соответствует нулю и проваливается. Удачи! Попробуйте метод putExtra(). – flobacca
Да, я забыл сделать putExtra для случая FROM_EDIT_RECIPE. Проверенный после того, как Маддассир указал, чтобы проверить, что он туда, и увидел ваш комментарий после @flobacca, но вы были абсолютно правы. – MarinheiroTX