【发布时间】:2015-02-18 09:17:34
【问题描述】:
在我的应用程序中,当我启动应用程序时,第一次一切正常,我可以在活动之间导航,但是当回到第一个活动 (MainActivity) 并尝试转到第二个活动时,我的应用程序崩溃了,但我没有知道为什么吗?!
在 MainActivity 中:
img_khayam.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this,KhayamSeason.class);
MainActivity.this.startActivity(intent);
}
});
在第二个活动中(KhayamSeason):
package com.xalid.khayam;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class KhayamSeason extends ListActivity {
private database db;
private String[] Name;
private String[] Id;
private int i =0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.seasone);
db = new database(this);
refresher();
setListAdapter(new AA());
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent(KhayamSeason.this, ShowText.class);
//intent.putExtra("name", Name[position]);
intent.putExtra("id", Id[position]);
KhayamSeason.this.startActivity(intent);
}
class AA extends ArrayAdapter<String> {
public AA() {
super(KhayamSeason.this, R.layout.raw_seasone, Name);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.raw_seasone, parent, false);
TextView name = (TextView) row.findViewById(R.id.name_poet);
name.setText(Name[position]);
name.setTypeface(MainActivity.font);
return (row);
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
private void refresher() {
db.open();
int save = db.Count_field("khayam");
Name = new String[save];
Id = new String[save];
for (i = 0; i < save; i++) {
Name[i] = db.Show_Season("khayam", i);
Id[i] = db.get_id2("khayam", i, 0);
}
db.close();
}
}
在数据库类中:
public Integer Count_field(String table){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by ID", null);
int i = Cursor.getCount();
return i ;
}
public String Show_Season(String table , int row){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by ID", null);
Cursor.moveToPosition(row);
String s = Cursor.getString(1);
return s ;
}
public String get_id2(String table,int field, int col){
Cursor Cursor = mydb.rawQuery("SELECT * FROM "+table+" group by ID", null);
Cursor.moveToPosition(field);
String s = Cursor.getString(col);
return s ;
}
正如我第一次说的那样,当我在 MainActivity 和第二个活动(KhayamSeason)之间导航时没有问题,但是当我按下返回按钮并重试时,我的应用程序会崩溃。崩溃后,当我查看 Logcat 时,它会将我引向这些代码行:
Name[i] = db.Show_Season("khayam", i);
Id[i] = db.get_id2("khayam", i, 0);
但是,如果这两条线有问题,为什么第一次运行良好?! 我的应用程序实际上设计用于在第二个活动中显示 khayam 的诗歌季节列表,并将名称保存在 SQLite 数据库中,表名为“khayam”,我的第一个字段是“ID”,第二个“名称”和第三个“文本”。
我的问题在哪里? 或者如何为第二个活动设置默认值?因为我认为按下返回按钮后会保留一些数据。
【问题讨论】:
-
崩溃 > 没有发布 Logcat ??
-
Logcat 只是告诉我哪里出错了
-
"我有错误,但是Logcat只显示错误,为什么我有错误时需要知道错误?" -> 你没有任何意义......
-
我不知道怎么告诉你,但我的问题是为什么第一次一切正常,但第二次却不行?
-
但如果这两行有问题,为什么第一次运行良好?! - 正是你应该发布 logcat 的原因,因为它会告诉你为什么,是什么原因造成的它
标签: android database android-activity