将数据从 activity 发送到 Android 中的另一个 activity 时显示错误
Show error when send data from activity to another activity in Android
我想在另一个 activity 中从 ListView
发送数据并将此数据保存到 SQLiteDatabase
。我使用 ListView
并将用户数据保存到 SQLite
并将此数据设置为 ListView
,我希望在单击列表视图的项目时,将用户信息显示到另一个 activity。但是告诉我这个错误:
java.lang.NumberFormatException: Invalid int: "null"
主页代码:
public class Example_mainPage extends AppCompatActivity {
private ListView list_phoneBook;
private dbOpenHelper_ex dbOpen_ex;
private dbHandler_ex dbhandler_ex;
private String[] nameArray;
private int[] list_id;
private Button insert_ex_btn, update_ex_btn, delete_ex_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example_main_page);
dbhandler_ex = new dbHandler_ex(this);
list_phoneBook = (ListView) findViewById(R.id.phoneBook_list);
list_phoneBook.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent con_intent = new Intent(Example_mainPage.this, EX_Contacts_Page.class);
con_intent.putExtra("id_show", list_id[position]);
startActivity(con_intent);
}
});
insert_ex_btn = (Button) findViewById(R.id.btn_insert_ex);
insert_ex_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent insert_intent = new Intent(Example_mainPage.this, EX_Insert_Page.class);
startActivity(insert_intent);
}
});
/*
update_btn = (Button) findViewById(R.id.btn_update);
update_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbhandler_ex.open();
dbhandler_ex.update("Maryam", 1, 4);
dbhandler_ex.close();
}
});
delete_btn = (Button) findViewById(R.id.btn_delete);
delete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbhandler_ex.open();
dbhandler_ex.delete(2);
dbhandler_ex.close();
}
});*/
}
@Override
protected void onResume() {
super.onResume();
refresh();
}
public void refresh() {
dbhandler_ex.open();
int count = dbhandler_ex.count();
nameArray = new String[count];
list_id = new int[count];
for (int i = 0; i < count; i++) {
nameArray[i] = dbhandler_ex.display(i, 1) + "\n" + dbhandler_ex.display(i, 2);
list_id[i] = Integer.parseInt(dbhandler_ex.display(i, 0));
}
dbhandler_ex.close();
list_phoneBook.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nameArray));
}
}
联系人页面代码:
public class EX_Contacts_Page extends AppCompatActivity {
private dbHandler_ex dbHandlerEx;
private TextView name_ex_contacts, family_ex_contacts, address_ex_contacts, email_ex_contacts, phone_ex_contacts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ex_contacts__page);
dbHandlerEx = new dbHandler_ex(this);
Bundle extraBundle = getIntent().getExtras();
String list_id = extraBundle.getString("id_show");
name_ex_contacts = (TextView) findViewById(R.id.ex_contacts_name);
family_ex_contacts = (TextView) findViewById(R.id.ex_contacts_family);
address_ex_contacts = (TextView) findViewById(R.id.ex_contacts_address);
email_ex_contacts = (TextView) findViewById(R.id.ex_contacts_email);
phone_ex_contacts = (TextView) findViewById(R.id.ex_contacts_phone);
dbHandlerEx.open();
name_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 1));
family_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 2));
address_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 3));
email_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 4));
phone_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 5));
dbHandlerEx.close();
}
public void ex_update(View view){
}
public void ex_delete(View view){
}
}
dbHandler 代码:
public class dbHandler_ex {
private dbOpenHelper_ex dbOpen;
private SQLiteDatabase database;
public dbHandler_ex(Context context) {
dbOpen = new dbOpenHelper_ex(context);
}
public void open() {
database = dbOpen.getWritableDatabase();
}
public void close() {
dbOpen.close();
}
public String display(int position, int field) {
Cursor cursor = database.query(dbOpen.tblName, null, null, null, null, null, null);
cursor.moveToPosition(position);
String user_field = cursor.getString(field);
return user_field;
}
public String display_id(int id, int field) {
Cursor cursor = database.rawQuery("SELECT * FROM tbl_phonebook WHERE id="+id, null);
cursor.moveToFirst();
String user_field = cursor.getString(field);
return user_field;
}
public void insert(String name, String family, String address, String email, String phone) {
ContentValues contentValues = new ContentValues();
contentValues.put(dbOpen.cName, name);
contentValues.put(dbOpen.cFamily, family);
contentValues.put(dbOpen.cAddress, address);
contentValues.put(dbOpen.cEmail, email);
contentValues.put(dbOpen.cPhone, phone);
database.insert(dbOpen.tblName, dbOpen.cName, contentValues);
}
public Integer count() {
Cursor cursor = database.query(dbOpen.tblName, null, null, null, null, null, null);
int count_num = cursor.getCount();
return count_num;
}
public void delete(int id) {
database.delete(dbOpen.tblName, "id=" + id, null);
}
public void update(String value, int field, int id) {
ContentValues contentValues = new ContentValues();
database.update(dbOpen.tblName, contentValues, "id=" + id, null);
}
}
LogCat 错误:
02-02 15:20:46.474 22609-22609/com.tellfa.nikandroid.database E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tellfa.nikandroid.database, PID: 22609
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tellfa.nikandroid.database/com.tellfa.nikandroid.database.example.EX_Contacts_Page}: java.lang.NumberFormatException: Invalid int: "null"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access0(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
Caused by: java.lang.NumberFormatException: Invalid int: "null"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.tellfa.nikandroid.database.example.EX_Contacts_Page.onCreate(EX_Contacts_Page.java:32)
at android.app.Activity.performCreate(Activity.java:6020)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access0(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
我怎样才能适应它? tnx 全部 <3
你必须在 oncreate() 方法中调用 refresh() 方法
即
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example_main_page);
dbhandler_ex = new dbHandler_ex(this);
list_phoneBook = (ListView) findViewById(R.id.phoneBook_list);
refresh();
list_phoneBook.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent con_intent = new Intent(Example_mainPage.this, EX_Contacts_Page.class);
con_intent.putExtra("id_show", list_id[position]);
startActivity(con_intent);
}
});
你好抱歉我懒得阅读所有代码现在分析它,但我能说的是logcat错误
java.lang.NumberFormatException: Invalid int: "null"
您正在解析一个空值到数字,null不是java 中的有效数字,换句话说 null != 0。希望对您有所帮助
我认为您的问题是在将额外数据放入 Intent
时类型不匹配。你正在输入一个 int
con_intent.putExtra("id_show", list_id[position]);
并试图获得 String
String list_id = extraBundle.getString("id_show");
将其更改为
int list_id = extraBundle.getInt("id_show");
我想在另一个 activity 中从 ListView
发送数据并将此数据保存到 SQLiteDatabase
。我使用 ListView
并将用户数据保存到 SQLite
并将此数据设置为 ListView
,我希望在单击列表视图的项目时,将用户信息显示到另一个 activity。但是告诉我这个错误:
java.lang.NumberFormatException: Invalid int: "null"
主页代码:
public class Example_mainPage extends AppCompatActivity {
private ListView list_phoneBook;
private dbOpenHelper_ex dbOpen_ex;
private dbHandler_ex dbhandler_ex;
private String[] nameArray;
private int[] list_id;
private Button insert_ex_btn, update_ex_btn, delete_ex_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example_main_page);
dbhandler_ex = new dbHandler_ex(this);
list_phoneBook = (ListView) findViewById(R.id.phoneBook_list);
list_phoneBook.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent con_intent = new Intent(Example_mainPage.this, EX_Contacts_Page.class);
con_intent.putExtra("id_show", list_id[position]);
startActivity(con_intent);
}
});
insert_ex_btn = (Button) findViewById(R.id.btn_insert_ex);
insert_ex_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent insert_intent = new Intent(Example_mainPage.this, EX_Insert_Page.class);
startActivity(insert_intent);
}
});
/*
update_btn = (Button) findViewById(R.id.btn_update);
update_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbhandler_ex.open();
dbhandler_ex.update("Maryam", 1, 4);
dbhandler_ex.close();
}
});
delete_btn = (Button) findViewById(R.id.btn_delete);
delete_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbhandler_ex.open();
dbhandler_ex.delete(2);
dbhandler_ex.close();
}
});*/
}
@Override
protected void onResume() {
super.onResume();
refresh();
}
public void refresh() {
dbhandler_ex.open();
int count = dbhandler_ex.count();
nameArray = new String[count];
list_id = new int[count];
for (int i = 0; i < count; i++) {
nameArray[i] = dbhandler_ex.display(i, 1) + "\n" + dbhandler_ex.display(i, 2);
list_id[i] = Integer.parseInt(dbhandler_ex.display(i, 0));
}
dbhandler_ex.close();
list_phoneBook.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, nameArray));
}
}
联系人页面代码:
public class EX_Contacts_Page extends AppCompatActivity {
private dbHandler_ex dbHandlerEx;
private TextView name_ex_contacts, family_ex_contacts, address_ex_contacts, email_ex_contacts, phone_ex_contacts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ex_contacts__page);
dbHandlerEx = new dbHandler_ex(this);
Bundle extraBundle = getIntent().getExtras();
String list_id = extraBundle.getString("id_show");
name_ex_contacts = (TextView) findViewById(R.id.ex_contacts_name);
family_ex_contacts = (TextView) findViewById(R.id.ex_contacts_family);
address_ex_contacts = (TextView) findViewById(R.id.ex_contacts_address);
email_ex_contacts = (TextView) findViewById(R.id.ex_contacts_email);
phone_ex_contacts = (TextView) findViewById(R.id.ex_contacts_phone);
dbHandlerEx.open();
name_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 1));
family_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 2));
address_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 3));
email_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 4));
phone_ex_contacts.setText(dbHandlerEx.display_id(Integer.parseInt(list_id), 5));
dbHandlerEx.close();
}
public void ex_update(View view){
}
public void ex_delete(View view){
}
}
dbHandler 代码:
public class dbHandler_ex {
private dbOpenHelper_ex dbOpen;
private SQLiteDatabase database;
public dbHandler_ex(Context context) {
dbOpen = new dbOpenHelper_ex(context);
}
public void open() {
database = dbOpen.getWritableDatabase();
}
public void close() {
dbOpen.close();
}
public String display(int position, int field) {
Cursor cursor = database.query(dbOpen.tblName, null, null, null, null, null, null);
cursor.moveToPosition(position);
String user_field = cursor.getString(field);
return user_field;
}
public String display_id(int id, int field) {
Cursor cursor = database.rawQuery("SELECT * FROM tbl_phonebook WHERE id="+id, null);
cursor.moveToFirst();
String user_field = cursor.getString(field);
return user_field;
}
public void insert(String name, String family, String address, String email, String phone) {
ContentValues contentValues = new ContentValues();
contentValues.put(dbOpen.cName, name);
contentValues.put(dbOpen.cFamily, family);
contentValues.put(dbOpen.cAddress, address);
contentValues.put(dbOpen.cEmail, email);
contentValues.put(dbOpen.cPhone, phone);
database.insert(dbOpen.tblName, dbOpen.cName, contentValues);
}
public Integer count() {
Cursor cursor = database.query(dbOpen.tblName, null, null, null, null, null, null);
int count_num = cursor.getCount();
return count_num;
}
public void delete(int id) {
database.delete(dbOpen.tblName, "id=" + id, null);
}
public void update(String value, int field, int id) {
ContentValues contentValues = new ContentValues();
database.update(dbOpen.tblName, contentValues, "id=" + id, null);
}
}
LogCat 错误:
02-02 15:20:46.474 22609-22609/com.tellfa.nikandroid.database E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.tellfa.nikandroid.database, PID: 22609
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tellfa.nikandroid.database/com.tellfa.nikandroid.database.example.EX_Contacts_Page}: java.lang.NumberFormatException: Invalid int: "null"
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2331)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access0(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
Caused by: java.lang.NumberFormatException: Invalid int: "null"
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.tellfa.nikandroid.database.example.EX_Contacts_Page.onCreate(EX_Contacts_Page.java:32)
at android.app.Activity.performCreate(Activity.java:6020)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2284)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
at android.app.ActivityThread.access0(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1309)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5349)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
我怎样才能适应它? tnx 全部 <3
你必须在 oncreate() 方法中调用 refresh() 方法 即
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.example_main_page);
dbhandler_ex = new dbHandler_ex(this);
list_phoneBook = (ListView) findViewById(R.id.phoneBook_list);
refresh();
list_phoneBook.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent con_intent = new Intent(Example_mainPage.this, EX_Contacts_Page.class);
con_intent.putExtra("id_show", list_id[position]);
startActivity(con_intent);
}
});
你好抱歉我懒得阅读所有代码现在分析它,但我能说的是logcat错误
java.lang.NumberFormatException: Invalid int: "null"
您正在解析一个空值到数字,null不是java 中的有效数字,换句话说 null != 0。希望对您有所帮助
我认为您的问题是在将额外数据放入 Intent
时类型不匹配。你正在输入一个 int
con_intent.putExtra("id_show", list_id[position]);
并试图获得 String
String list_id = extraBundle.getString("id_show");
将其更改为
int list_id = extraBundle.getInt("id_show");