如何从其他活动的MainActivity上制作toast/snackbar?

问题描述 投票:0回答:1

我开发了一个 Android 应用程序,其中包含触发 WebActivities 的按钮(每个按钮显示一个 WebView)。在我的应用程序中,我实现了两种不同的方法来处理 WebView 关闭时的不同场景:

  1. 互联网连接丢失:在这种情况下,一种方法会监视互联网连接并检测其丢失。经过预定义的延迟后,它调用

    finish()
    来关闭 WebActivity。

  2. 令牌验证:另一种方法在用户单击按钮启动 WebActivity 时验证令牌。如果发现token无效,会立即调用

    finish()

目前,当调用这些方法时,它们仅将警告消息打印到日志中。但是,我想通过添加一个

static
方法来增强用户体验,该方法在调用
finish()
后触发 MainActivity 上的 toast/snackbar。此 toast/snackbar 将向用户提供有关浏览器关闭原因的反馈。

如何实现这样一个

static
方法,以在 WebActivity 关闭时在 MainActivity 上显示 toast/snackbar?

创建此类方法并在

finish()
之前调用它们是一个好方法吗?或者也许我应该考虑一些不同的事情?

java android android-activity toast
1个回答
0
投票

要在另一个 Activity 的 MainActivity 中显示 Toast 或 Snackbar,您需要从第二个 Activity 向 MainActivity 发送消息或触发操作。以下是实现此目的的一般方法:

  1. 定义自定义接口(可选,以获得更大的灵活性):

您可以在第二个 Activity 中定义自定义接口来与 MainActivity 进行通信。该接口将允许第二个活动向 MainActivity 发送消息。在单独的文件中创建 Java 接口(例如 MessageListener.java):

    public interface MessageListener {
    void showMessage(String message);
}

2.在MainActivity中实现接口:

在您的 MainActivity 中,实现 MessageListener 接口:

public class MainActivity extends AppCompatActivity implements MessageListener {
    // ... your MainActivity code ...

    @Override
    public void showMessage(String message) {
        // Display the message as a Toast or Snackbar
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

3.传递对MainActivity的引用:

在第二个 Activity 中,您需要对 MainActivity 或 MessageListener 接口的实例的引用。您可以通过在启动第二个活动时传递引用来实现此目的。

例如,在您的第二个活动的代码中:

public class SecondActivity extends AppCompatActivity {
    private MessageListener messageListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        // Initialize messageListener (e.g., pass the reference from MainActivity)
        messageListener = (MessageListener) MainActivity.this;

        // ... your SecondActivity code ...
    }

    // Method to display a message in MainActivity
    private void displayMessageInMainActivity() {
        // Call the showMessage method in MainActivity
        messageListener.showMessage("Hello from SecondActivity!");
    }
}

确保处理 messageListener 可能为 null 的情况,例如当 SecondActivity 未从 MainActivity 启动时。

4.触发信息显示:

每当您想要从 SecondActivity 在 MainActivity 中显示消息时,您可以调用 messageListener 接口引用上的 showMessage 方法。

例如,您可以在单击按钮或响应某些事件时调用它:

    // Trigger displaying a message in MainActivity
displayMessageInMainActivity();

通过执行以下步骤,您可以从 SecondActivity 向 MainActivity 发送消息并将其显示为 Toast 或 Snackbar。这种方法允许您在活动之间进行通信,而无需直接启动另一个活动。

© www.soinside.com 2019 - 2024. All rights reserved.