【问题标题】:Refresh an activity from another activity Android从另一个活动 Android 刷新活动
【发布时间】:2018-09-30 17:43:36
【问题描述】:

我需要从 android 应用程序中的另一个活动重新加载一个活动。第二个活动是一个对话窗口,基于对话窗口的基础活动应该刷新内容。 (通过对话框活动的点击按钮)

【问题讨论】:

  • 你在第一个Activity中使用startActivityForResult吗?
  • 是的。我使用 startActivityForResult 来初始化第二个活动
  • 好的,那么你只需要实现onActivityResult 来做“刷新”的事情
  • 请在此处发布您的代码

标签: android android-activity


【解决方案1】:

重新加载您的活动。

context.startActivity(context.getIntent());
context.finish();

【讨论】:

    【解决方案2】:

    假设 A 是您要重新加载的活动,而 B 是另一个活动。

    在这种情况下,只需调用 finish() 当您从 A 移动到 B 时。当您从 B 调用 A 时,它将再次加载活动 A。

    【讨论】:

      【解决方案3】:

      Dialog Window和activity是完全不同的东西。

      可以从它的对话框中刷新第一个活动。您可以使用界面来完成。

      这是简单的解决方案。在您的第一个活动中实现了一个接口名称IRefreshInteface。它的定义如下:

      public interface IRefreshInteface(){
        public void doRefreshValue(String commandValue);
      }
      

      现在,如果您在 Activity 中实现 IRefreshInteface,您将获得方法 doRefreshValue(String commandValue) 并在此处编写刷新代码。

      @Override
      void doRefreshValue(String commandValue){
      // Write refresh code here
      }
      

      现在在您的对话框中,您有 Activity 的上下文。使用该上下文对象,您可以轻松调用此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;
          }
      

      这里,将Activity的Context传递给displayMessage()方法,并使用这种方式调用Activity方法doRefreshValue

      ((IRefreshInteface) context).doRefreshValue("YOUR_COMMAND");
      

      更多信息请访问herehere

      希望这能解决您的问题。抱歉英语不好:)

      【讨论】:

        猜你喜欢
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        • 1970-01-01
        • 2015-11-25
        相关资源
        最近更新 更多