두 가지 다른 활동이 있습니다. 하지만 두 번째 활동으로 가서 뒤로 누르면 ListView가 표시되지 않습니다. 나는 그 문제가 무엇인지 찾아 낼 수 없다.두 번째로 어댑터를 설정하면 ListView가 표시되지 않습니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currentLayout = R.layout.activity_main;
db = new TodoDbHelper(this);
todos = db.getAllTodos();
nrOfTodos = todos.size();
//For ListView
mListView = (ListView) findViewById(R.id.gradientBackground);
mAdapter = new TodoAdapter<String>(this, R.layout.text_view_item_default);
mListView.setAdapter(mAdapter);
//Calculate height of screen
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
listItemSize = height/10;
SCREEN_WIDTH = width;
createTodoItems();
}
public void createTodoItems() {
refresh();
mAdapter.clear();
for(int i = 0; i < nrOfTodos; i++) {
String title = todos.get(i).getTitle();
mAdapter.add(title);
//System.out.println(title);
//System.out.println(mAdapter);
}
mListView.setAdapter(mAdapter);
ImageButton b = (ImageButton) findViewById(R.id.addButton);
b.bringToFront();
}
public void refresh() {
todos = db.getAllTodos();
nrOfTodos = todos.size();
}
@Override
public void onBackPressed() {
System.out.println("" + this.findViewById(android.R.id.content).getRootView());
System.out.println("" + currentLayout);
if(R.layout.activity_add_todo == currentLayout) {
setContentView(R.layout.activity_main);
currentLayout = R.layout.activity_main;
createTodoItems();
Log.d("onBackPressed", "We're going back.");
}
}
동일한 "createTodoItems()"를 두 번 수행하지만 두 번째로는 상관 없습니다.
또한 mAdapter는 두 번째 createTodoItems() 이후와 같습니다. mAdapter의 값은 여전히 동일합니다.
새 항목을 추가 할 때와 같은 문제가 발생합니다. 그냥 ListView에서 아무것도 렌더링 못해.
이 이전으로 돌아갑니다 뒤로 버튼을 2 개 활동을하고 눌러 올바른 방법이 아니다 ... 당신을 의도를 사용해야합니다. –
왜냐하면 onBackPressed()는 onCreate()처럼 다시 contentView를 설정하고 mListView 및 mAdapter를 다시 설정하지 않고 createTodoItems()를 수행하기 때문입니다. - 활동을 마치지 않도록 onBackPressed()를 재정의한다고 가정합니다. – Wildroid
맞습니다. 이제는 내가 무엇을하고 있는지도 모릅니다. – Clanket