2013-07-23 35 views
0

我创建了数据库。我用edittext插入数据到我的数据库。我的edittext中有一个问题。当我用日志显示我的edittexts中的数据,但他们是空的。我不明白问题在哪里。请帮帮我。提前致谢。什么使我的EditText变为空?

添加数据:

public void AddData() { 
     setContentView(R.layout.dbase2); 
     EditText e1 = (EditText) findViewById(R.id.eText1); 
     EditText e2 = (EditText) findViewById(R.id.eText2); 
     EditText e3 = (EditText) findViewById(R.id.eText3); 
     EditText e4 = (EditText) findViewById(R.id.eText4); 

     String bn = dContents; 
     String pn = e1.getText().toString(); 
     String at = e2.getText().toString(); 
     String tp = e3.getText().toString(); 
     String py = e4.getText().toString(); 

     SQLiteDatabase db = book.getWritableDatabase(); 
     ContentValues cv = new ContentValues(); 

     cv.put("bNum", bn); 
     cv.put("pName", pn); 
     cv.put("author", at); 
     cv.put("type", tp); 
     cv.put("pyear", py); 

     db.insert("btable", null, cv); 
     db.close(); 


    } 

DBASE 2.XML

<TextView android:id="@+id/t1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="27dp" android:text="Ürün İsmi" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/t2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/eText1" android:layout_centerHorizontal="true" android:text="Yazar" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/eText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/eText1" android:layout_below="@+id/t2" android:ems="10" /> <EditText android:id="@+id/eText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/t1" android:gravity="top" android:layout_centerHorizontal="true" android:ems="10" > <requestFocus /> </EditText> <TextView android:id="@+id/t3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/t2" android:layout_below="@+id/eText2" android:text="Türü" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/eText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/eText2" android:layout_below="@+id/t3" android:ems="10" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/t1" android:layout_below="@+id/eText3" android:text="Yayın Yılı" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/eText4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/eText3" android:layout_below="@+id/textView1" android:ems="10" /> <Button android:id="@+id/adding" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/eText4" android:layout_centerHorizontal="true" android:layout_marginTop="36dp" android:text="Kayıt Ekle" /> </RelativeLayout> </pre>
+0

是乌拉圭回合的setContentView(R.layout.dbase2);在OnCreate方法?从上面的代码看起来似乎不是.. – KOTIOS

+0

不,它不在onCreate()方法中。在onCreate()方法中,我有另一个布局。 – Adaichi

+1

你不能在一个活动中使用2布局 – KOTIOS

回答

4

您的问题,您声明一个EditText,并在同一时间读取它的价值。所以它一直是空白的。你应该做的是,在onCreate()方法中声明你的EditText,并在像onClick()这样的事件上获取它的值。

试试我的方法,

public void AddData() 
{ 
    setContentView(R.layout.dbase2); 
    EditText e1 = (EditText) findViewById(R.id.eText1); 
    EditText e2 = (EditText) findViewById(R.id.eText2); 
    EditText e3 = (EditText) findViewById(R.id.eText3); 
    EditText e4 = (EditText) findViewById(R.id.eText4); 
} 

public void onClick (View view) // I am assuming you have one command Button 
{ 

    String bn = dContents; 
    String pn = e1.getText().toString(); 
    String at = e2.getText().toString(); 
    String tp = e3.getText().toString(); 
    String py = e4.getText().toString(); 

    SQLiteDatabase db = book.getWritableDatabase(); 
    ContentValues cv = new ContentValues(); 

    cv.put("bNum", bn); 
    cv.put("pName", pn); 
    cv.put("author", at); 
    cv.put("type", tp); 
    cv.put("pyear", py); 

    db.insert("btable", null, cv); 
    db.close(); 
} 
+0

为什么它将是空的任何具体或具体的原因,所以如果他在onCreate()方法中调用此方法,那么在方法内部声明它有什么问题。 ? –

+3

它是空白的,因为你只是初始化EditText,并且你没有输入任何字符。 – Vigbyor

+0

Vigbyor是对的。您将文本值设置为TextView,但EditText不包含任何值,因此您的字符串是“”。 – JesusS

相关问题