2010-08-01 2 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 메소드를 오버라이드 (override) 있는지 확인해야합니다. this answerthis answer의 정보를 확인하십시오.

2

android : configChanges = "orientation" android manifest에서 활동을 선언 할 때 추가하십시오.

관련 문제