0

ネットで長い間検索した後でも、私の問題は解決しません。

マニフェスト:

<application
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Application"
        android:configChanges="keyboardHidden|orientation"
        android:label="@string/title_activity_application" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

アプリケーションのレイアウト:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@color/white" >
        <WebView
            android:id="@+id/navWeb"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/mainFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="be.smartschool.mobile.MainFragment" ></fragment>

    </LinearLayout>

フラグメント レイアウト

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<WebView 
    android:id="@+id/mainWeb"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

アプリケーション アクティビティ:

public class Application extends Activity {
protected WebView mainWeb;
protected FrameLayout mainWebPlaceholder;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_application);
    //mainWeb = (WebView) getLastNonConfigurationInstance();
    //initUI();
}

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

フラグメントクラス

public class MainFragment extends Fragment {
protected WebView mainWeb;

public MainFragment(){
    this.setRetainInstance(true);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_mainweb, container, false);
    Log.i("INFO", ">>>>>>> onCreateView");
    if(mainWeb != null) {
        mainWeb.restoreState(savedInstanceState);
        Log.i("INFO", ">>>>>>> restoreState");
     }
    return view;
}

 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
     super.onActivityCreated(savedInstanceState);
     if(mainWeb == null) {
         initUI();
     }
 }

 @Override
 public void onSaveInstanceState(Bundle outState) { 
     if(mainWeb != null) {
         Log.i("INFO", ">>>>>>> onSaveInstanceState");
         mainWeb.saveState(outState);
     }
 }

protected void initUI(){
    Log.i("INFO", ">>>>>>> UI Init called");

    // Create the webview
    mainWeb = (WebView) getActivity().findViewById(R.id.mainWeb);
    if(mainWeb != null) {
        mainWeb.getSettings().setSupportZoom(false);
        mainWeb.getSettings().setBuiltInZoomControls(false);
        mainWeb.getSettings().setLoadsImagesAutomatically(true);
        mainWeb.getSettings().setJavaScriptEnabled(true);
        // Load a page
        mainWeb.loadUrl("http://www.google.com");

        Log.i("INFO", ">>>>>>> WEBVIEW CREATED");
    }
}
}

したがって、フラグメントを保持可能にしたことがわかります。デバッグすると、ログはロジックになります。webview は 1 回作成されますが、初回のみ表示されます。向きを変更した後、Web ビューが表示されなくなりました。ここで絞ります。それは小さな問題のように思えますが、適切な解決策が見つかりません

4

2 に答える 2

0

android:configChanges="orientation"AndroidManifest.xml のアクティビティ タグの中に入れてみてください

それがうまくいくことを願っています...

于 2012-09-06T13:25:39.630 に答える
0

onConfigurationChanged をオーバーライドする必要がある場合があります。

于 2012-09-06T13:24:52.887 に答える