으로 android.support.v4.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"/>
로그 캣 세부 사항 :
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 뷰를 가질 권리가있다 :
확인이 하나는 3 개의 레슨이 포함되어 있습니다. 모든 액티비티는이 경우 연관된 XML 뷰를 가질 자격이 있습니다.이 액티비티는 appcompativity입니다. 주 활동 XML 파일을 조각 XML 파일과 혼합합니다. XML은 정적이며 실행 중에 변경되지 않습니다. Java 코드는 동적이며 변경됩니다.오리 엔테이션 변경은 동적 이벤트이며 장치는 화면을 다시 그려주기 위해 활동 라이프 사이클을 거쳐야합니다. 설명하기가 어렵지만 더 많은 질문이있는 경우 도와 드리겠습니다. – Pomagranite
기본 XML과 조각 XML을 혼합합니다. MainFragment는 ListFragment를 상속하고이 클래스는 XML 파일과 연결되지 않습니다. 이유 : 목록 조각은 프로그래밍 방식으로 자체 레이아웃을 정의합니다. MainActivity XML에서는 단편을 추가하는 중입니다. 문제가 어디에 있습니까 ?? –
공용 클래스 MainActivity는 AppCompatActivity ...를 확장합니다. setContentView (R.layout.activity_main); 하지만 액티비티 _ 메인에서 < xmlns : android = "http://schemas.android.com/apk/res/android" android : layout_width = "match_parent" android : layout_height = "match_parent" android : name = " com.workout.MainFragment "/> – Pomagranite