좋아, 여기에 문제가 있는데, 하나의 조각 활동 안에 조각이 두 개 있습니다. 하나는 ListFragment이고 다른 하나는 Fragment입니다. 그래서, 어떤 항목이 선택되었는지에 따라 Fragment를 표시하고 싶습니다. 여기에 문제가있다. 가로 모드 또는 세로 모드에서이 조각 활동을 시작하면 올바르게 작동합니다. 어쨌든, 내가 다른 방향으로 바뀌면 언제나 추락했다. 오류는 inflator에 관한 것입니다. onCreateView와 같지만 다른 게시물을 보았습니다. onConfigurationChanges, onSaveInstances 등 다른 해결 방법은 이름에서 클래스로 변경되지 않았습니다. 모두 동일한 오류가 있습니다. 그래서, 나는 누군가가 나를 돕기를 바랍니다. 나는 레이아웃 - 토지와 레이아웃을 가지고 있지만 여전히 작동하지 않습니다.조각 오리 엔테이션 오리 엔테이션 오리 엔테이션
여기 내 코드가 있습니다.
activity_pontix (토지와 세로 모드 모두)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFF99"
android:orientation="vertical" >
<TextView android:id="@+id/Pontix"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_horizontal"
android:text="@string/pontix"
android:background="#ffffff"
android:textColor="#000000"
android:textSize="40dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<fragment
android:id="@+id/sideMenu"
android:name="com.example.pontix.SideMenu"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3" />
<fragment
android:id="@+id/content"
android:name="com.example.pontix.ContentPreview"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
SideMenu.java
public class SideMenu extends ListFragment
{
OnMenuSelectedListener setSelected;
public interface OnMenuSelectedListener
{
public void onItemSelected(int position);
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
int layout = R.layout.side_menu_item;
setListAdapter(new ArrayAdapter<String>(getActivity(), layout, MenuItem.Items));
}
@Override
public void onStart()
{
super.onStart();
if (getFragmentManager().findFragmentById(R.id.sideMenu) != null) {
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
}
}
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
try
{
setSelected = (OnMenuSelectedListener) activity;
}
catch (ClassCastException e)
{
throw new ClassCastException(activity.toString() + " must implement OnMenuSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id)
{
setSelected.onItemSelected(position);
// Set the item as checked to be highlighted when in two-pane layout
getListView().setItemChecked(position, true);
}
}
ContentPreview.java
public class ContentPreview extends Fragment
{
final static String ARG_POSITION = "position";
int mCurrentPosition = -1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
if (savedInstanceState != null)
{
mCurrentPosition = savedInstanceState.getInt(ARG_POSITION);
}
return inflater.inflate(R.layout.content_view, container, false);
}
@Override
public void onStart()
{
super.onStart();
Bundle args = getArguments();
if (args != null)
{
updateContentPreview(args.getInt(ARG_POSITION));
}
else if (mCurrentPosition != -1)
{
updateContentPreview(mCurrentPosition);
}
}
public void updateContentPreview(int position)
{
switch(position)
{
case 1:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Gincana");
mCurrentPosition = position;
break;
}
case 2:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Tarefas");
mCurrentPosition = position;
break;
}
case 3:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Ranking");
mCurrentPosition = position;
break;
}
case 4:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Amigos");
mCurrentPosition = position;
break;
}
case 5:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Perfil");
mCurrentPosition = position;
break;
}
case 6:
{
TextView article = (TextView) getActivity().findViewById(R.id.contentView);
article.setText("Voce estava na aba Sobre");
mCurrentPosition = position;
break;
}
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt(ARG_POSITION, mCurrentPosition);
}
}
PontixActivity.java
public class PontixActivity extends FragmentActivity implements SideMenu.OnMenuSelectedListener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pontix);
Intent intent = getIntent();
int code = intent.getIntExtra(GincanaActivity.EXTRA_CONTENT,0);
SideMenu sideMenu = new SideMenu();
sideMenu.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(R.id.sideMenu, sideMenu).commit();
ContentPreview contentFragment = (ContentPreview) getSupportFragmentManager().findFragmentById(R.id.content);
if (contentFragment != null)
{
contentFragment.updateContentPreview(code);
}
}
public void onItemSelected(int position)
{
switch(position)
{
case 0:
{
Intent contentView = new Intent(this, GincanaActivity.class);
startActivity(contentView);
break;
}
case 1:
{
Intent contentView = new Intent(this, TarefaActivity.class);
startActivity(contentView);
break;
}
case 2:
{
Intent contentView = new Intent(this, RankingActivity.class);
startActivity(contentView);
break;
}
case 3:
{
Intent contentView = new Intent(this, MainActivity.class);
startActivity(contentView);
break;
}
case 4:
{
Intent contentView = new Intent(this, MainActivity.class);
startActivity(contentView);
break;
}
case 5:
{
Intent contentView = new Intent(this, MainActivity.class);
startActivity(contentView);
break;
}
}
}
}
다음은 오류 로그입니다.
08-03 13:13:58.745: W/IInputConnectionWrapper(13847): showStatusIcon on inactive InputConnection
08-03 13:14:09.065: D/AbsListView(13847): Get MotionRecognitionManager
08-03 13:14:09.065: D/AbsListView(13847): Get MotionRecognitionManager
08-03 13:14:12.310: D/AndroidRuntime(13847): Shutting down VM
08-03 13:14:12.310: W/dalvikvm(13847): threadid=1: thread exiting with uncaught exception (group=0x40c661f8)
08-03 13:14:12.340: E/AndroidRuntime(13847): FATAL EXCEPTION: main
08-03 13:14:12.340: E/AndroidRuntime(13847): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pontix/com.example.pontix.PontixActivity}: android.view.InflateException: Binary XML file line #21: Error inflating class fragment
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3365)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.access$700(ActivityThread.java:128)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1165)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.os.Handler.dispatchMessage(Handler.java:99)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.os.Looper.loop(Looper.java:137)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.main(ActivityThread.java:4514)
08-03 13:14:12.340: E/AndroidRuntime(13847): at java.lang.reflect.Method.invokeNative(Native Method)
08-03 13:14:12.340: E/AndroidRuntime(13847): at java.lang.reflect.Method.invoke(Method.java:511)
08-03 13:14:12.340: E/AndroidRuntime(13847): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
08-03 13:14:12.340: E/AndroidRuntime(13847): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
08-03 13:14:12.340: E/AndroidRuntime(13847): at dalvik.system.NativeStart.main(Native Method)
08-03 13:14:12.340: E/AndroidRuntime(13847): Caused by: android.view.InflateException: Binary XML file line #21: Error inflating class fragment
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
08-03 13:14:12.340: E/AndroidRuntime(13847): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:280)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.Activity.setContentView(Activity.java:1892)
08-03 13:14:12.340: E/AndroidRuntime(13847): at com.example.pontix.PontixActivity.onCreate(PontixActivity.java:13)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.Activity.performCreate(Activity.java:4562)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
08-03 13:14:12.340: E/AndroidRuntime(13847): ... 12 more
08-03 13:14:12.340: E/AndroidRuntime(13847): Caused by: java.lang.IllegalStateException: Fragment com.example.pontix.SideMenu did not create a view.
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:295)
08-03 13:14:12.340: E/AndroidRuntime(13847): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
08-03 13:14:12.340: E/AndroidRuntime(13847): ... 23 more
08-03 13:14:12.355: D/dalvikvm(13847): GC_CONCURRENT freed 152K, 3% free 13194K/13575K, paused 1ms+3ms
08-03 13:14:12.355: D/AbsListView(13847): [unregisterDoubleTapMotionListener]
08-03 13:14:12.355: I/MotionRecognitionManager(13847): .unregisterListener :/listener count = 0->0, [email protected]
08-03 13:14:12.355: D/AbsListView(13847): [unregisterDoubleTapMotionListener]
08-03 13:14:12.355: I/MotionRecognitionManager(13847): .unregisterListener :/listener count = 0->0, [email protected]
08-03 13:14:12.360: D/AbsListView(13847): [unregisterDoubleTapMotionListener]
08-03 13:14:12.360: I/MotionRecognitionManager(13847): .unregisterListener :/listener count = 0->0, [email protected]
아직도 생성자와 충돌은 ... 사람은 왜 아는 사람? –
프로그래밍 방식으로 생성 된 조각과 조각을 XML로 정의하여 혼합하고 있습니다. 이는 재앙의 방법입니다. XML 요소를 으로 대체하고 모든 것을 프로그래밍 방식으로 (선호) 수행하거나 XML로 모두 수행하고 PontixActivity에서 조각 인스턴스화/트랜잭션을 제거하십시오. –
@ Error454로 고쳐 주셨습니다. 감사합니다! 레이아웃에서 단편 참조를 대체하고 코드에서 단편을 교환하는 것. –