2013-02-01 156 views
1

我正在製作一個應用程序,爲主要內容加載webview。我有一個菜單inflater,將提供幾個鏈接。我使用菜單inflater作爲警告標籤。 「你確定要離開這個頁面嗎?」但是,如果用戶不想離開這個頁面,我希望他們能夠按下後退按鈕返回到webview。我遇到的問題是後退按鈕重新啓動活動並重新加載網頁。停止Android後退按鈕從重新啓動活動

我試着將一個bundle中的savedContentState發送到菜單類,但我不知道如何將它應用到我的webview時,我按下後退按鈕。

主類:

protected void onRestoreInstanceState(Bundle savedInstanceState) { 

    super.onRestoreInstanceState(savedInstanceState); 
    web.restoreState(savedInstanceState); 
    Intent in = new Intent(getApplicationContext(), DBZWiki.class); 
    in.putExtras(savedInstanceState); 
    startActivity(in); 
} 


public boolean onCreateOptionsMenu(android.view.Menu menu) { 

    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.dbz_menu, menu); 
    return true; 
} 

public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    case R.id.dbzAbout: 
     break; 

    case R.id.dbzDonate: 
     break; 

    case R.id.dbzWiki: 
     Intent a = new Intent("com.example.thenewboston.DBZWIKI"); 
     startActivity(a); 

     break; 
    } 
    return false; 
} 

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    web.loadUrl("file:///android_asset/infAppPaused.html"); 

} 

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    web.loadUrl(stream); 
} 

} 

維基Menu類:

public class DBZWiki extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dbz_wiki); 

} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if(keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent in = getIntent(); 
     startActivity(in); 
    } 
    return true; 
} 
+0

如果你通過getIntent()獲得了意圖並啓動它,那麼你是否重新啓動你的意圖,你想避免的確切事情? – Gjordis

+0

我只是在鬼混,實際上我不知道該怎麼做。 – liyicky

+0

如果根本不使用onKeyDown方法會發生什麼? – Gjordis

回答

1

我解決了這個問題。按下名爲onResume()的後退按鈕。

@Override 
protected void onResume() { 
// TODO Auto-generated method stub 
super.onResume(); 
web.loadUrl(stream); 
} 

因此,loadUrl正在重新加載webView,而不是重新啓動活動。

+1

您應該將其標記爲答案。 :) – praneetloke

相關問題