我正在尝试TextViews
使用SQLite
DataBase 填充第二个事件.当用户点击该项目时,ListView
他/她可以在第二个上查看事件的详细信息,Activity
但每当我点击某个事件时它就会崩溃.
MainActivity.java
myList.setAdapter(myCursorAdapter);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Cursor myCursor = (Cursor) myList.getItemAtPosition(position);
String pickedString = myCursor.getString(1);
Intent intent = new Intent(getApplicationContext(),EventDetails.class);
intent.putExtra("name_var", pickedString);
startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
DBHelper:
public ArrayList<String> getEvent(String name)
{
ArrayList<String> array_list = new ArrayList<String>();
//hp = new HashMap();
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery( "select * from events WHERE name='" +name+"'", null );
res.moveToFirst();
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_NAME)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_DATE)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_DESCRIPTION)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_TIME_START)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_TIME_END)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_ADDRESS)));
array_list.add(res.getString(res.getColumnIndex(EVENTS_COLUMN_POSTCODE)));
return array_list;
}
Run Code Online (Sandbox Code Playgroud)
EventDetails.java
public class EventDetails extends Activity {
private DBHelper mydb;
TextView title = (TextView) findViewById(R.id.event_title);
TextView time_date = (TextView) findViewById(R.id.event_time_date);
TextView description = (TextView) findViewById(R.id.event_description);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String name = intent.getStringExtra("name_var");
mydb = new DBHelper(this);
ArrayList<String> valuesFromDb;
valuesFromDb = mydb.getEvent(name);
title.setText(valuesFromDb.get(1));
time_date.setText(valuesFromDb.get(2));
description.setText(valuesFromDb.get(3));
}
}
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)TextView title = (TextView) findViewById(R.id.event_title); TextView time_date = (TextView) findViewById(R.id.event_time_date); TextView description = (TextView) findViewById(R.id.event_description);
你打电话findViewById()
太早,因为活动不会有一个在这里得到NPE Window
之前onCreate()
.
将这些初始化移动到onCreate()
.还要setContentView()
在它们之前添加一个设置包含这些id的视图的布局,以便返回非null值,并且在尝试调用时不会获得NPE setText()
.
归档时间: |
|
查看次数: |
85 次 |
最近记录: |