Search code examples
androidsqlitelistviewcontent-values

Show error when send data from activity to another activity in Android


I want sent data from ListView in another activity and save this datas to SQLiteDatabase. i use ListView and save users data into SQLite and set this data to ListView, i want when click on items of list view, show users info into another activity. but Show me this Error :

java.lang.NumberFormatException: Invalid int: "null"

MainPage codes :

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));
    }

}

ContactsPage codes :

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 codes :

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 errors :

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.access$800(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.access$800(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) 

How can i fit it? tnx all <3


Solution

  • I think your problem is with type mismatch when putting extra data in your Intent . you are putting an int

    con_intent.putExtra("id_show", list_id[position]);

    and trying to get String

    String list_id = extraBundle.getString("id_show");
    

    change that to

    int list_id = extraBundle.getInt("id_show");