
Question:
Here is my code. everything works great except the orientation, it reloads every time I rotate the phone it reloads to the home page, it is a pain. can anyone tell me where the problem is.
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; } }
Solution:1
android:configChanges="orientation" add when u declare activity in android manifest
Solution:2
Your problem is that you are not handling orientation properly, you need to make sure that you override the onSaveInstanceState
and onRestoreInstanceState
methods in your Activity
if you want it to maintain it's state correctly. Have a look at the information in this answer and this answer.
Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
EmoticonEmoticon