2010-08-01 75 views
0

這是我的代碼。除了方向之外,一切都很好,每當我將手機重新加載到主頁時,它都會重新加載,這是一種痛苦。誰能告訴我問題在哪裏。Webview方向不起作用

import android.app.Activity; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.FrameLayout; 
import android.widget.Toast; 


public class hpro extends Activity { 
/** Called when the activity is first created. */ 
WebView webview; 

//zoom 

private static final FrameLayout.LayoutParams ZOOM_PARAMS = 

    new FrameLayout.LayoutParams(

    ViewGroup.LayoutParams.FILL_PARENT, 

    ViewGroup.LayoutParams.WRAP_CONTENT, 

    Gravity.BOTTOM); 
//finish zoom 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 




//progress bar 

getWindow().requestFeature(Window.FEATURE_PROGRESS); 

// frame starts 
setContentView(R.layout.main); 

webview = (WebView) findViewById(R.id.webview); 
WebSettings webSettings = webview.getSettings(); 
webview.getSettings().setPluginsEnabled(true); 
webview.setWebViewClient(new HelloWebViewClient() {}); // MARK 
webSettings.setJavaScriptEnabled(true); 



//zoom 
FrameLayout mContentView = (FrameLayout) getWindow(). 
getDecorView().findViewById(android.R.id.content); 
final View zoom = this.webview.getZoomControls(); 

mContentView.addView(zoom, ZOOM_PARAMS); 

zoom.setVisibility(View.GONE); 

//end zoom 
//loading bar 


final Activity activity = this; 
webview.setWebChromeClient(new WebChromeClient() { 
    public void onProgressChanged(WebView view, int progress) { 
    // Activities and WebViews measure progress with different scales. 
    // The progress meter will automatically disappear when we reach 100% 
    activity.setProgress(progress * 100); 
    } 
}); 
webview.setWebViewClient(new WebViewClient() { 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
    } 
}); 

webview.loadUrl("http://mypage.com/"); 

} 

//orientation 

@Override 
public void onConfigurationChanged(Configuration newConfig){   
    super.onConfigurationChanged(newConfig); 
} 


//block browser 

private class HelloWebViewClient extends WebViewClient { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
view.loadUrl(url); 
return true; 
} 
} 


// back key 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
webview.goBack(); 
return true; 
} 
return super.onKeyDown(keyCode, event); 
} 

//start submenu 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 


public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 
case R.id.home: 
webview.loadUrl("http://mypage.com"); 
return true; 

case R.id.exit: 
// TODO 

Intent i = new Intent(); 
i.setAction(Intent.ACTION_MAIN); 
i.addCategory(Intent.CATEGORY_HOME); 
this.startActivity(i); 
return true; 

case R.id.reg: 
webview.loadUrl("http://mypage.com/subpage"); 
return true; 

case R.id.help: 
webview.loadUrl("http://mypage.com/help"); 
return true; 

} 

return false; 
} 
} 

回答

0

你的問題是,你不處理方向正確,你需要確保你覆蓋你的ActivityonSaveInstanceStateonRestoreInstanceState方法,如果你想讓它保持它的狀態正確。查看this answerthis answer中的信息。

2

android:configChanges =「orientation」 當您在android清單中聲明活動時添加