Мне нужно перезагрузить действие из другого действия в приложении для Android. Это второе действие является диалоговым окном, и на основе базового действия диалогового окна следует обновлять содержимое. (Нажав кнопку диалогового окна)
Обновить действие из другого действия Android
Ответы (3)
Перезагрузите свою деятельность.
context.startActivity(context.getIntent());
context.finish();
Предположим, что A — это действие, которое вы хотите перезагрузить, а B — другое действие.
В этом случае просто вызовите finish(), когда вы переходите от A к B. Когда вы вызываете A из B, он снова загрузит действие A.
Диалоговое окно и активность — совершенно разные вещи.
Первую активность можно обновить из диалогового окна. Вы можете сделать это с помощью интерфейса.
Вот простое решение. В вашем первом действии реализовано имя интерфейса IRefreshInteface
. Это определение выглядит следующим образом:
public interface IRefreshInteface(){
public void doRefreshValue(String commandValue);
}
Теперь, если вы реализуете IRefreshInteface в своей деятельности, вы получите метод doRefreshValue(String commandValue)
и напишите здесь код обновления.
@Override
void doRefreshValue(String commandValue){
// Write refresh code here
}
Теперь в вашем диалоговом окне у вас есть контекст вашей деятельности. Используя этот объект контекста, вы можете легко вызвать этот метод doRefreshValue(String commandValue)
. Вот пример кода:
public AlertDialog displayMessage(Context context, String title, String message){
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(title);
builder.setMessage(message);
LayoutInflater inflater = LayoutInflater.from(context);
final View v = inflater.inflate(R.layout.custom_view, null);
builder.setView(v);
shipText = (EditText)v.findViewById(R.id.shipNameEditText);
scientistNameText = (EditText)v.findViewById(R.id.scientistEditText);
scientistEmailText = (EditText)v.findViewById(R.id.emailEditText);
volumeText = (EditText)v.findViewById(R.id.volumeEditText);
colourText = (EditText)v.findViewById(R.id.colourEditText);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((IRefreshInteface) context).doRefreshValue("YOUR_COMMAND");
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog dialog= builder.create();
dialog.show();
Button tb = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
tb.setOnClickListener(new CustomListener(dialog));
return dialog;
}
здесь передайте метод Context of Activity todisplayMessage()
и вызовите метод Activity doRefreshValue
следующим образом:
((IRefreshInteface) context).doRefreshValue("YOUR_COMMAND");
Для получения дополнительной информации посетите здесь и здесь
Надеюсь, это решит вашу проблему. Извините за плохой английский :)
startActivityForResult
в первом действии? - person OneCricketeer   schedule 03.05.2017onActivityResult
для обновления - person OneCricketeer   schedule 03.05.2017