ネットで長い間検索した後でも、私の問題は解決しません。
マニフェスト:
<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 ビューが表示されなくなりました。ここで絞ります。それは小さな問題のように思えますが、適切な解決策が見つかりません