Ориентация на веб-сайт не работает - PullRequest
0 голосов
/ 01 августа 2010

Вот мой код.все отлично работает, кроме ориентации, перезагружается каждый раз, когда я поворачиваю телефон, перезагружается на домашнюю страницу, это боль.Может кто-нибудь сказать мне, где проблема.

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

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

android: configChanges = "direction" добавить, когда вы объявляете активность в манифесте android

0 голосов
/ 01 августа 2010

Ваша проблема в том, что вы неправильно обрабатываете ориентацию, вам необходимо убедиться, что вы переопределяете методы onSaveInstanceState и onRestoreInstanceState в вашем Activity, если хотите, чтобы он поддерживал правильное состояние.Посмотрите информацию в этом ответе и этом ответе .

...