0

これが私のコードです。向きを除いてすべてがうまく機能します。電話を回転させるたびにリロードされ、ホームページにリロードされます。それは苦痛です。誰でも問題がどこにあるのか教えてください。

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

2 に答える 2

2

android:configChanges="orientation" androidマニフェストでアクティビティを宣言するときに追加

于 2010-08-17T19:22:05.433 に答える
0

問題は、方向を適切に処理していないことです。状態を正しく維持したい場合は、メソッドonSaveInstanceStateonRestoreInstanceStateメソッドをオーバーライドする必要があります。この回答この回答Activityの情報を見てください。

于 2010-08-01T06:59:08.430 に答える