Android-从另一个活动onButtonClick向ListView添加项目

时间:2015-05-30 04:29:38

标签: java android android-listview

我不确定为什么我的代码不起作用,我已经查看了本网站上的其余主题并按照说明操作,但似乎仍有一些错误。

在我的应用中,有一个页面供用户输入一些数据,包括日期,描述,小时和持续时间分钟。描述/日期是字符串,小时和分钟是整数。我现在只关注字符串日期来简化事情。

用户在活动中输入此数据后,他们将点击"提交"按钮。当他们单击此提交按钮时,我希望将用户带到另一个页面,在那里他们将能够在ListView中查看其子项目的历史记录。

在第一个活动中,当"提交"单击按钮,将调用此方法:

NSLog(@"%@", [myFractions Print];

在此之后,应该打开PreviousPractices类。显示了此类的onCreate方法:

public void newEntrySubmit(View v)
{
    hours = npHours.getValue();
    minutes = npMinutes.getValue();
    description=String.valueOf(etDescription.getText().toString());
    dateOfPractice=String.valueOf(etDate.getText().toString());

    Intent i = new Intent(this, PreviousPractices.class);
    i.putExtra("Hours", hours);
    i.putExtra("Minutes", minutes);
    i.putExtra("Description", description);
    i.putExtra("dateOfPractice", dateOfPractice);
    startActivity(i);

}

问题在于,当我点击"提交"按钮,应用程序崩溃。当我删除

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.previous_practices_layout);

    Bundle extras = getIntent().getExtras();
    hours = extras.getInt("Hours");
    minutes = extras.getInt("Minutes");
    description=extras.getString("Description");
    date = extras.getString("Date");

    practiceList=(ListView)findViewById(R.id.practiceList);
    ArrayList<String> listItems = new ArrayList<String>();
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,listItems);
    practiceList.setAdapter(adapter);
    listItems.add(date);
    adapter.notifyDataSetChanged();
}

行,它成功转到正确的ListView页面,但是没有显示任何内容(因为没有设置适配器)。

1 个答案:

答案 0 :(得分:3)

试试这个:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.previous_practices_layout);

    Bundle extras = getIntent().getExtras();
    hours = extras.getInt("Hours");
    minutes = extras.getInt("Minutes");
    description=extras.getString("Description");
    // date = extras.getString("Date");

    practiceList=(ListView)findViewById(R.id.practiceList);
    ArrayList<String> listItems = new ArrayList<String>();
    listItems.add(description);
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1,listItems);
    practiceList.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

我将测试字符串更改为描述,因为日期未设置(#34;日期&#34;以前的活动中没有额外的日期)。此外,我将您的ArrayList.add()移动到ListView.setAdapter()之前。试试这个,看它是否有效。