0

我是Android开发的新手。我遇到了一个问题,我确实花了两天时间试图找出代码有什么问题。

在我的应用程序中,我想要一个Button执行数据库更新的程序。单击此按钮时Button,我得到一个NullPointerException.

这是我的课:

package com.test.database;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SQLiteExample extends Activity implements OnClickListener {

    Button sqlUpdate, sqlView;
    EditText sqlName, sqlHotness;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        setContentView(R.layout.sqliteexample);
        sqlUpdate = (Button) findViewById(R.id.bSQLUpdate);
        sqlName = (EditText)findViewById(R.id.etName);
        sqlHotness = (EditText)findViewById(R.id.etSQLHotness);

        sqlView = (Button) findViewById(R.id.bSQLopenView);
        sqlView.setOnClickListener(this);
        sqlUpdate.setOnClickListener(this);

    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub

        switch(arg0.getId()){

        case R.id.bSQLUpdate:

            boolean didItWork = true;

            try{
                String name = sqlName.getText().toString();
                String hotness = sqlHotness.getText().toString();

                HotOrNot entry = new HotOrNot(SQLiteExample.this);

                entry.open();
                entry.createEntry(name, hotness);
                entry.close();
            }catch (Exception e){
                didItWork = false;              
            }finally{
                if(didItWork){
                    Dialog d = new Dialog(this);
                    d.setTitle("Heck Yea!");
                    TextView tv = new TextView(this);
                    tv.setText("Success");
                    d.setContentView(tv);
                    d.show();
                }
            }           
            break;
        case R.id.bSQLopenView:

            break;      
        }
    }
}

这是我的布局 xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name" />

    <EditText
        android:id="@+id/etSQLName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hotness scale 1 to 10" />

    <EditText
        android:id="@+id/etSQLHotness"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" />

    <Button
        android:id="@+id/bSQLUpdate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Update SQLite Database" />

    <Button
        android:id="@+id/bSQLopenView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="View" />

</LinearLayout>
4

2 回答 2

4

您在编辑文本中使用错误的 id 的第一件事。它是 etSQLName,您使用 etName。

因此,更改以下行并再次检查。

sqlName = (EditText)findViewById(R.id.etName);

sqlName = (EditText)findViewById(R.id.etSQLName );
于 2012-12-03T12:11:10.437 回答
0
sqlName = (EditText)findViewById(R.id.etSQLName);
于 2012-12-03T12:44:18.777 回答