Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示奇怪行为的列表视图_Android_Android Listview - Fatal编程技术网

Android 显示奇怪行为的列表视图

Android 显示奇怪行为的列表视图,android,android-listview,Android,Android Listview,我拥有的 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.tasks_list_frag, container, false); Log.d("HirakDebug", "tasksListFrag View Created");

我拥有的

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tasks_list_frag, container, false);
    Log.d("HirakDebug", "tasksListFrag View Created");
    tasks_Database_Operations tasksDatabaseOperations = new tasks_Database_Operations(getActivity());
    Cursor cursor = tasksDatabaseOperations.readData();
    taskslist = (SwipeListView) view.findViewById(R.id.tasks_list);
    adapter = new tasksCursorAdapter(getActivity(), cursor, CursorAdapter.FLAG_AUTO_REQUERY);
    taskslist.setAdapter(adapter);
    delete = (Button) view.findViewById(R.id.deleteAll);
    delete.setOnClickListener(this);
    taskslist.setSwipeListViewListener(new BaseSwipeListViewListener() {
        @Override
        public void onOpened(int position, boolean toRight) {
        }

        @Override
        public void onClosed(int position, boolean fromRight) {
        }

        @Override
        public void onListChanged() {
        }

        @Override
        public void onMove(int position, float x) {
        }

        @Override
        public void onStartOpen(int position, int action, boolean right) {
            Log.d("swipe", String.format("onStartOpen %d - action %d", position, action));
        }

        @Override
        public void onStartClose(int position, boolean right) {
            Log.d("swipe", String.format("onStartClose %d", position));
        }

        @Override
        public void onClickBackView(int position) {
            Log.d("swipe", String.format("onClickBackView %d", position));
            taskslist.closeAnimate(position);//when you touch back view it will close
        }

        @Override
        public void onDismiss(int[] reverseSortedPositions) {

        }

    });


    taskslist.setSwipeMode(SwipeListView.SWIPE_MODE_RIGHT); // there are five swiping modes
    // there are four swipe actions
    taskslist.setSwipeActionRight(SwipeListView.SWIPE_ACTION_REVEAL);
    taskslist.setOffsetRight(convertDpToPixel(80f)); // right side offset
    taskslist.setAnimationTime(500); // Animation time
    // enable or disable SwipeOpenOnLongPress

    Log.d("HirakDebug", "tasksListFrag Adapter set");

    return view;
}

public int convertDpToPixel(float dp) {
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    float px = dp * (metrics.densityDpi / 160f);
    return (int) px;
}

@Override
public void onResume() {
    super.onResume();
    Log.d("HirakDebug", "taskListFrag resumed");
    getRetainInstance();
}

@Override
public void setRetainInstance(boolean retain) {
    super.setRetainInstance(true);
}

@Override
public void onPause() {
    super.onPause();
    Log.d("LifeCycle", "tLF Pause");
}

@Override
public void onStop() {
    super.onStop();
    Log.d("LifeCycle", "tLF Stop");
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    Log.d("LifeCycle", "tLF DestroyView");
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.d("LifeCycle", "tLF Destroy");
}

@Override
public void onDetach() {
    super.onDetach();
    Log.d("LifeCycle", "tLF Detach");
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    Log.d("LifeCycle", "tLF Attach");
}

@Override
public void onStart() {
    super.onStart();
    Log.d("LifeCycle", "tLF Start");
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Log.d("LifeCycle", "tLF saveInstance State");
}

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

}

@Override
public void onClick(View v) {
    if (v == delete) {
        Log.d("HirakDebug", "Delete Button Pressed");
        tasks_Database_Operations tasksDatabaseOperations = new tasks_Database_Operations(getActivity());
        SQLiteDatabase sqLiteDatabase = tasksDatabaseOperations.getWritableDatabase();
        sqLiteDatabase.delete(tasksDatabaseOperations.ASSIS_TASK_TABLE_NAME, null, null);
        Log.d("HirakDebug", "tLF All Data Deleted");
        adapter.notifyDataSetChanged();
        Log.d("HirakDebug", "tLF ArrayList Cleared");
        sqLiteDatabase.close();
    }

}
我的应用程序只有一个活动,而所有其他活动都是片段 其中一个片段显示通过游标适配器从datbase填充的listview

我的问题

每次屏幕旋转或按下home(主页)按钮后返回应用程序时,我看到的是另一个listview位于另一个listview上,即另一个相同的listview也填充在先前存在的listview上

这是我的代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.tasks_list_frag, container, false);
    Log.d("HirakDebug", "tasksListFrag View Created");
    tasks_Database_Operations tasksDatabaseOperations = new tasks_Database_Operations(getActivity());
    Cursor cursor = tasksDatabaseOperations.readData();
    taskslist = (SwipeListView) view.findViewById(R.id.tasks_list);
    adapter = new tasksCursorAdapter(getActivity(), cursor, CursorAdapter.FLAG_AUTO_REQUERY);
    taskslist.setAdapter(adapter);
    delete = (Button) view.findViewById(R.id.deleteAll);
    delete.setOnClickListener(this);
    taskslist.setSwipeListViewListener(new BaseSwipeListViewListener() {
        @Override
        public void onOpened(int position, boolean toRight) {
        }

        @Override
        public void onClosed(int position, boolean fromRight) {
        }

        @Override
        public void onListChanged() {
        }

        @Override
        public void onMove(int position, float x) {
        }

        @Override
        public void onStartOpen(int position, int action, boolean right) {
            Log.d("swipe", String.format("onStartOpen %d - action %d", position, action));
        }

        @Override
        public void onStartClose(int position, boolean right) {
            Log.d("swipe", String.format("onStartClose %d", position));
        }

        @Override
        public void onClickBackView(int position) {
            Log.d("swipe", String.format("onClickBackView %d", position));
            taskslist.closeAnimate(position);//when you touch back view it will close
        }

        @Override
        public void onDismiss(int[] reverseSortedPositions) {

        }

    });


    taskslist.setSwipeMode(SwipeListView.SWIPE_MODE_RIGHT); // there are five swiping modes
    // there are four swipe actions
    taskslist.setSwipeActionRight(SwipeListView.SWIPE_ACTION_REVEAL);
    taskslist.setOffsetRight(convertDpToPixel(80f)); // right side offset
    taskslist.setAnimationTime(500); // Animation time
    // enable or disable SwipeOpenOnLongPress

    Log.d("HirakDebug", "tasksListFrag Adapter set");

    return view;
}

public int convertDpToPixel(float dp) {
    DisplayMetrics metrics = getResources().getDisplayMetrics();
    float px = dp * (metrics.densityDpi / 160f);
    return (int) px;
}

@Override
public void onResume() {
    super.onResume();
    Log.d("HirakDebug", "taskListFrag resumed");
    getRetainInstance();
}

@Override
public void setRetainInstance(boolean retain) {
    super.setRetainInstance(true);
}

@Override
public void onPause() {
    super.onPause();
    Log.d("LifeCycle", "tLF Pause");
}

@Override
public void onStop() {
    super.onStop();
    Log.d("LifeCycle", "tLF Stop");
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    Log.d("LifeCycle", "tLF DestroyView");
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.d("LifeCycle", "tLF Destroy");
}

@Override
public void onDetach() {
    super.onDetach();
    Log.d("LifeCycle", "tLF Detach");
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    Log.d("LifeCycle", "tLF Attach");
}

@Override
public void onStart() {
    super.onStart();
    Log.d("LifeCycle", "tLF Start");
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    Log.d("LifeCycle", "tLF saveInstance State");
}

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

}

@Override
public void onClick(View v) {
    if (v == delete) {
        Log.d("HirakDebug", "Delete Button Pressed");
        tasks_Database_Operations tasksDatabaseOperations = new tasks_Database_Operations(getActivity());
        SQLiteDatabase sqLiteDatabase = tasksDatabaseOperations.getWritableDatabase();
        sqLiteDatabase.delete(tasksDatabaseOperations.ASSIS_TASK_TABLE_NAME, null, null);
        Log.d("HirakDebug", "tLF All Data Deleted");
        adapter.notifyDataSetChanged();
        Log.d("HirakDebug", "tLF ArrayList Cleared");
        sqLiteDatabase.close();
    }

}

只需在activity onCreate方法中进行检查

if (saveInstance == null) {
  mFragment = new Fragment();
  fm.beginTransaction().replace(mFragment, TAG_TASK_FRAGMENT).commit();
}

由于方向改变,android活动的整个生命周期再次被称为.ohh。我得到了它。我实际上是在调用activity的onResume方法中的片段。因此,当方向改变或发生某些事情时,不仅是listview,而且整个片段都被添加到了先前存在的onehappy编程中。:)