android.support.v4.app.ListFragment
をandroid.app.ListFragment
に置き換えたときに、ListFragment(サポートバージョン)を使用しているときに、アプリケーションが向きを変えるのがなぜクラッシュするのか分かりません。すべてのものはうまくいく。私はこのメソッドを使用したくない"android:configChanges="orientation"
。私の問題の解決策として 。オリエンテーションクラッシュのアプリケーションの原因を変更しました。android.support.v4.app.ListFragment
- 私はすべての 事は結構です(土地に肖像画から)アプリケーションを起動した後、私のデバイスは非常に最初の時間を回転させたとき
- が、再び(肖像画に土地)クラッシュクラッシュクラッシュ
私は問題がサポートのlibで私のコードではないと思う。
MainFragmentクラスコード:
package com.workout;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
public class MainFragment extends ListFragment {
public MainFragment() {}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setListAdapter(new ArrayAdapter<>(getActivity(),
android.R.layout.simple_list_item_1,WorkoutDetail.workoutDetails));
if (getListView() != null)
getListView().setOnItemClickListener((MainActivity)getActivity());
}
}
MainActivityコード:
package com.workout;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Intent intent = new Intent(this,DetailActivity.class);
// intent.putExtra(Intent.EXTRA_TEXT,id);
// startActivity(intent);
}
}
MainActivityのXML:
<?xml version="1.0" encoding="utf-8"?>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.workout.MainFragment"/>
Logcatの詳細:
12-14 22:17:58.383 7159-7159/com.workout E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.workout, PID: 7159
java.lang.IllegalStateException: Fragment has not been attached yet.
at android.support.v4.app.Fragment.instantiateChildFragmentManager(Fragment.java:2308)
at android.support.v4.app.Fragment.getChildFragmentManager(Fragment.java:773)
at android.support.v4.app.FragmentActivity.markState(FragmentActivity.java:967)
at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:527)
at android.support.v7.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:509)
at android.app.Activity.performSaveInstanceState(Activity.java:1419)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1301)
at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4637)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4588)
at android.app.ActivityThread.-wrap19(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1514)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:241)
at android.app.ActivityThread.main(ActivityThread.java:6274)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
私はすでに多くのstackoverflowリンクを訪れていますが、私の問題の解決策を見つけることができませんでした。
すべての断片が、それはこのケースでlistfragmentを含む関連付けられたXMLビューを持つ権利があります。すべてのアクティビティにはXMLビューが関連付けられていますが、この場合はappActivityです。主な活動XMLファイルとフラグメントXMLファイルを混在させています。 XMLは静的であり、実行中は変更されません。 Javaコードは動的で変化します。オリエンテーションの変更は動的イベントであり、デバイスはアクティビティのライフサイクルを経て、画面を再描画する必要があります。これを説明するのは難しいですが、もっと質問があれば助けようとします – Pomagranite
私は主な活動XMLと断片XMLを混在させています。 MainFragmentはListFragmentを継承し、このクラスはどのXMLファイルとも関連していません。reason:list フラグメントはプログラムによって独自のレイアウトを定義します。 MainActivity XMLで私は断片を追加しています。問題はどこですか? –
public class MainActivityはAppCompatActivityを継承します。setContentView(R.layout.activity_main);しかし、activity_main –
Pomagranite