• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Android-problem z bazą danych SQL lite

Ultraszybki serwer VPS NVMe START
0 głosów
62 wizyt
pytanie zadane 23 września w Android, Swift, Symbian przez Howdy Nowicjusz (140 p.)

Witam

Mój problem z bazą danych jest taki: gdy próbuje zapisać do bazy dane z edit texta który znajduje się w dialogu wyskakuje mi komunikat z crashem. mój kod:

Main:
public class MainActivity extends AppCompatActivity {


    EditText et1;
    final Context context=this;
    DbAdapter dbAdapter;



    @Override
    public void onStart(){
        super.onStart();
        createNotification();
        Toast.makeText(this,"Welcome!!!",Toast.LENGTH_SHORT).show();
    }

    public void author_intent(){
    Intent intent=new Intent(this, Intecja_O_Autorze.class);
        startActivity(intent);
    }
   /* public void insertAddress(){
        et1=(EditText) (findViewById(R.id.ET));
        String address=et1.getText().toString();
        dbAdapter.open();
        Long inserted=dbAdapter.insertAddress(address);
        if(inserted>=0){
            Toast.makeText(context, "added!!!", Toast.LENGTH_SHORT).show();
            et1.setText("");
        } else{
            Toast.makeText(context, "not added :(", Toast.LENGTH_SHORT).show();
        }



    } */

    public void createNotification(){
        NotificationCompat.Builder mBuilder=(NotificationCompat.Builder) new NotificationCompat.Builder(this);
        mBuilder.setSmallIcon(R.drawable.notif);
        mBuilder.setContentTitle("EZopener:");
        mBuilder.setContentText("Click here to enter app");
        NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0,mBuilder.build());

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        dbAdapter=new DbAdapter(getApplicationContext());
        setSupportActionBar(toolbar);
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //showDialog(view);
                LayoutInflater li = LayoutInflater.from(context);
                View dialoglayoutView = li.inflate(R.layout.dialoglayout, null);
                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
                alertDialogBuilder.setView(dialoglayoutView);
                alertDialogBuilder.setCancelable(false);
                alertDialogBuilder.setPositiveButton("Add",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                            //insertAddress();
                                et1=(EditText) (findViewById(R.id.ET));
                                String address=et1.getText().toString();
                                dbAdapter.open();
                                Long inserted=dbAdapter.insertAddress(address);
                                if(inserted>=0){
                                    Toast.makeText(context, "added!!!", Toast.LENGTH_SHORT).show();
                                    et1.setText("");
                                } else{
                                    Toast.makeText(context, "not added :(", Toast.LENGTH_SHORT).show();
                                }
                                dbAdapter.close();

                            }
                        });
                alertDialogBuilder.setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });
                AlertDialog alertDialog = alertDialogBuilder.create();
                alertDialog.show();

            }
        });


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
            author_intent();

        return super.onOptionsItemSelected(item);
    }
}
Pomocnik:
public class EzOpenerPomocnikBazyDanych extends SQLiteOpenHelper {
    private static final String DB_NAME="zapisaneStrony";
    private static final int DB_VERSION=1;


    public EzOpenerPomocnikBazyDanych(Context context) {
        super(context, DB_NAME, null, DB_VERSION);

    }
//SQLiteDatabase.execSQL(String sql);
    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("CREATE TABLE STRONY(_id INTEGER PRIMARY KEY AUTOINCREMENT, "
        + "ADRES TEXT);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }


}

tutaj wzorowałem się na poradniku z jakiegoś zagranicznego bloga:

public class DbAdapter {
    static SQLiteDatabase database;
    EzOpenerPomocnikBazyDanych EzOHelper;
    public DbAdapter(Context context){
        EzOHelper=new EzOpenerPomocnikBazyDanych(context);

    }
    public void open(){
     database=EzOHelper.getWritableDatabase();
    }
    public void close(){
        database.close();
    }
    public static Long insertAddress(String address){

        ContentValues webAddressValues=new ContentValues();
        webAddressValues.put("ADRES", address );
        database.insert("STRONY", null, webAddressValues);
        return null;
    }
    public static void deleteAddress(SQLiteDatabase db, String address){
        db.delete("STRONY",
                "ADRES = ?",
                new String[] {address});
    }

 

komentarz 23 września przez vector Mądrala (5,120 p.)

który znajduje się w dialogu wyskakuje mi komunikat z crashem

wrzuć go też, może być pomocny.

komentarz 23 września przez Howdy Nowicjusz (140 p.)
EzOpener has stopped

i tyle
komentarz 23 września przez vector Mądrala (5,120 p.)
a gdzieś może jakiś stack trace ?
komentarz 23 września przez Howdy Nowicjusz (140 p.)
stack trace?

pierwsze słyszę

to?:

                                                                       --------- beginning of crash
09-23 19:03:54.681 2605-2605/com.example.mp.ezopener E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: com.example.mp.ezopener, PID: 2605
                                                                       java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
                                                                           at com.example.mp.ezopener.MainActivity$1$1.onClick(MainActivity.java:104)
                                                                           at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
komentarz 23 września przez vector Mądrala (5,120 p.)

tak, to jest stack trace.

Teraz przeczytaj to i pomyśl.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
                                                                           at com.example.mp.ezopener.MainActivity$1$1.onClick(MainActivity.java:104)

 

komentarz 23 września przez Howdy Nowicjusz (140 p.)

czyli  tutaj: String address=et1.getText().toString(); problemem jest et1? mam et1 = (EditText) (findViewById(R.id.ET)); ,a ET jest tutaj: 


<EditText
    android:id="@+id/ET"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

 

komentarz 24 września przez vector Mądrala (5,120 p.)
tak ale szukasz tego elementu w kontekście dialogu. Zmień na (EditText) (MainActivity.this.findViewById(R.id.ET))
komentarz 24 września przez Howdy Nowicjusz (140 p.)
Nic to nie zmieniło ten sam błąd i w tym samym miejscu :/

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 66 wizyt
0 głosów
0 odpowiedzi 62 wizyt
0 głosów
1 odpowiedź 185 wizyt
pytanie zadane 14 lipca 2016 w Java przez mix923 Początkujący (490 p.)

41,548 zapytań

80,592 odpowiedzi

159,504 komentarzy

19,827 pasjonatów

Przeglądających: 137
Pasjonatów: 6 Gości: 131

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...