当方向改变时,片段的应用程序关闭

时间:2018-01-25 14:00:59

标签: android listview android-fragments

嗨我的小应用程序有问题。 所以我使用碎片。一个是列表视图,另一个是textView。当我单击ListView时,texView打印标题单击。 在肖像中,我获得了ListView,并在Landscape中获得了2 Frag。 它工作正常,但当我改变方向并点击(精细它的工作)并返回并再次更改方向,然后单击App Stop工作并打印弹出窗口,但我可以在后面看到意图已经工作,textViex改变了。

您是否知道问题所在的位置。我在Frag ListView中拥有最重要的代码:

@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);

    //variable values is an array of string
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, values){
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            View view =super.getView(position, convertView, parent);
            TextView textView=(TextView) view.findViewById(android.R.id.text1);
            textView.setTextColor(ContextCompat.getColor(getContext(), R.color.flatWhite));

            return view;
        }
    };
    setListAdapter(adapter);
}

@Override
public void onListItemClick(ListView l, View v, int position, long id){
    String item = (String)getListAdapter().getItem(position);
    TextFragment tf = (TextFragment)getFragmentManager().findFragmentById(R.id.textFrag);
    if(tf != null && tf.isInLayout()){
        tf.setText(item);
    }else{
        Intent intent = new Intent(getActivity(), TextActivity.class);
        intent.putExtra("value", item);
        startActivity(intent);
    }
}

1 个答案:

答案 0 :(得分:0)

在运行时(例如屏幕方向)更改配置时,Android通常会销毁应用程序的现有活动或片段并重新创建它。

您有以下选择: 锁定屏幕方向

阻止活动重新创建 通过在AndroidManifest.xml中的Activity上设置android:configChanges标志来处理方向更改的另一种最常见的解决方案。

android:configChanges="orientation|screenSize|keyboardHidden"

或者 保存基本状态 这是在方向更改期间保存活动或片段的基本数据的最常见情况。您可以在方向更改期间保存Bundle中的原始数据(如String,Boolean,Integers或Parcelable对象),并在重新创建Activity时读取相同的数据。