Обновить действие из другого действия Android

Мне нужно перезагрузить действие из другого действия в приложении для Android. Это второе действие является диалоговым окном, и на основе базового действия диалогового окна следует обновлять содержимое. (Нажав кнопку диалогового окна)


person kAsdh    schedule 03.05.2017    source источник
comment
Вы используете startActivityForResult в первом действии?   -  person OneCricketeer    schedule 03.05.2017
comment
да. Я использовал startActivityForResult для инициализации второго действия   -  person kAsdh    schedule 03.05.2017
comment
Хорошо, тогда вам просто нужно реализовать onActivityResult для обновления   -  person OneCricketeer    schedule 03.05.2017
comment
Разместите здесь свой код, пожалуйста   -  person Bhavnik    schedule 03.05.2017


Ответы (3)


Перезагрузите свою деятельность.

context.startActivity(context.getIntent());
context.finish();
person DroidNinja    schedule 04.05.2017

Предположим, что A — это действие, которое вы хотите перезагрузить, а B — другое действие.

В этом случае просто вызовите finish(), когда вы переходите от A к B. Когда вы вызываете A из B, он снова загрузит действие A.

person Plochie    schedule 03.05.2017

Диалоговое окно и активность — совершенно разные вещи.

Первую активность можно обновить из диалогового окна. Вы можете сделать это с помощью интерфейса.

Вот простое решение. В вашем первом действии реализовано имя интерфейса 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");

Для получения дополнительной информации посетите здесь и здесь

Надеюсь, это решит вашу проблему. Извините за плохой английский :)

person Md. Sajedul Karim    schedule 03.05.2017