从WebView导航到不同的父活动

时间:2013-01-08 14:45:07

标签: android android-actionbar actionbarsherlock

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

现在问题:

我希望能够从WebViewActivity“向上导航”到相应的父活动。例如:如果从WebViewActivity调用MainActivity而不是导航,则应将用户带到MainActivity。根据{{​​3}}指南,这很容易实现。 但是如何让WebViewActivity导航到PumpsActivity如何查看WebViewActivity的哪个活动已启动?

WebViewActivity的相关代码(与android.developer.com基本相同):

@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);
}

1 个答案:

答案 0 :(得分:1)

正如Leonidos建议的那样,你可以添加一个参数,但这引入了额外的耦合,我感觉父母只有共同的Activity超类,并且传递一个Activity类型并不理想。

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