Android:代码似乎正确但列表不会出现

时间:2018-04-12 14:30:04

标签: android listview

我遇到的问题是我的列表绝对拒绝呈现。

这是我的第一个活动,它有一个按钮,指向应该呈现列表的活动。有一个后续的xml,它将onClick方法绑定到openHistory方法。

public class MenuActivity extends AppCompatActivity{

private static final String FILE_NAME = "books.txt";
public static BookList bookList = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu_activity);
    bookList = new BookList(FILE_NAME, this);
}

@Override
protected void onStart(){
    super.onStart();
}

@Override
protected void onResume(){
    super.onResume();
    setContentView(R.layout.menu_activity);
}

@Override
protected void onPause(){
    super.onPause();
}

@Override
protected void onStop(){
    super.onStop();
}

@Override
protected void onDestroy(){
    super.onDestroy();
    bookList.writeToFile(this);
    this.finish();
}

@Override
protected void onRestart() {
    super.onRestart();
    setContentView(R.layout.menu_activity);
}

public void openHistory(View v){
    Intent histIntent = new Intent(this, HistoryActivity.class);

    this.startActivity(histIntent);
}
}

这是应该呈现列表的活动。

public class HistoryActivity extends AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.history_activity);
    ListView history = (ListView)findViewById(R.id.list);

    ArrayList<String> temp = new ArrayList<>();
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");
    temp.add("dog");
    temp.add("cat");
    temp.add("fish");

    ArrayAdapter historyAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, temp);

    history.setAdapter(historyAdapter);
}

@Override
protected void onStart(){
    super.onStart();
}

@Override
protected void onResume(){
    super.onResume();
    setContentView(R.layout.history_activity);
}

@Override
protected void onPause(){
    super.onPause();
}

@Override
protected void onStop(){
    super.onStop();
}

@Override
protected void onDestroy(){
    super.onDestroy();
    this.finish();
}

@Override
protected void onRestart() {
    super.onRestart();
}
}

我尝试搜索其他几个帖子(甚至其他网站)。我的代码至少在语法上是正确的,但我根本找不到错误。

任何和所有帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

首先,您的代码存在很多问题。你是不必要的重复功能和

1)不添加功能

@Override
protected void onStop(){
    super.onStop();

}

2)在onResume中设置视图。 onCreate就够了

3)重置视图。见第3点

4)调用this.finish();在onDestroy ...为什么?

你应该先修复这个

答案 1 :(得分:0)

您的ListView未显示任何内容,因为您在history_activity.xml方法中重新夸大了onResume,该方法仅覆盖了onCreate中之前的夸大视图。这是因为在onResume之后调用onCreate。只需从setContentView(R.layout.history_activity);中删除onResume即可,一切都会正常运行。