android - 从 WebView 导航到不同的父 Activity

标签 android android-actionbar actionbarsherlock

在我的 MainActivity 中,我有 5 个按钮,其中 4 个打开 WebViewActivity 以显示静态 HTML 内容。第 5 个按钮转到 PumpsActivity,它包含另外 5 个按钮,这些按钮还可以打开 WebViewActivity 以显示静态 HTML 页面。

现在解决问题:

我希望能够从 WebViewActivity“向上导航”到适当的父 Activity 。例如:如果 WebViewActivity 是从 MainActivity 调用的,那么向上导航应该将用户带到 MainActivity。这很容易按照 android.developer.com 上的指南实现。 . 但是如何让 WebViewActivity 导航到 PumpsActivity如何检查 WebViewActivity 是从哪个 Activity 启动的?

来 self 的 WebViewActivity 的相关代码(与 guide 中的基本相同):

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

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    Intent intent = getIntent();
    setTitle(intent.getStringExtra("WEBVIEW_TITLE"));

    webview = (WebView) findViewById(R.id.wvMyWebView);
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webview.loadUrl(intent.getStringExtra("WEBVIEW_URL"));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // This is called when the Home (Up) button is pressed
            // in the Action Bar.
            Intent parentActivityIntent = new Intent(this, MainActivity.class);
            
            parentActivityIntent.addFlags(
                    Intent.FLAG_ACTIVITY_CLEAR_TOP |
                    Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(parentActivityIntent);
            finish();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

最佳答案

正如 Leonidos 所建议的,您可以添加一个参数,但这会引入额外的耦合,而且我觉得父类只有 Activity 父类(super class)是公共(public)的,传递 Activity 类型并不理想。

想到的一种方法是在 WebViewActivity 中添加另一个 String extra,它指示调用 Activity。在 onOptionsItemSelected 中,您可以检查父字符串 extra 以查看调用它的 Activity,并根据需要导航到该 Activity。

关于android - 从 WebView 导航到不同的父 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217463/

相关文章:

Android,.txt 电子邮件附件未通过 Intent 发送

android - 三星 Galaxy Nexus 未出现在 OS X 上的 adb 设备下

java - 如何在Android中滚动项目时添加圆角作为Recyclerview的背景

Android:CardView 即将推出操作栏

java - 首选项屏幕以及半透明的导航和状态栏

android - NestedScrollView 剪切/覆盖嵌套 fragment 的底部

android - 在 ActionBar 中为 MenuItem 使用选择器

java - 当我的 ListFragment 从返回堆栈返回到布局时,如何刷新我的 ListFragment?

android-actionbar - 打开 ActionLayout 时隐藏菜单项

java - 使用 Proguard 混淆 ActionBarSherlock