我有这样的代码来获得的EditText值和查询数据库查询数据库基本Android的 - 上的EditText
MainActivity:
public class MainActivity extends Activity {
private ArrayList<String> results = new ArrayList<String>();
private String tableName = "horarios";
private SQLiteDatabase newDB;
Button bt_search;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TestAdapter mDbHelper = new TestAdapter(getBaseContext());
mDbHelper.createDatabase();
bt_search = (Button)findViewById(R.id.btnsearch);
bt_search.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.activity_main);
openAndQueryDatabase();
displayResultList();
}
});
}
public void back(View v) {
setContentView(R.layout.main);
}
private void displayResultList() {
lv = (ListView) findViewById(R.id.list);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
results);
lv.setAdapter(arrayAdapter);
}
private void openAndQueryDatabase() {
try {
EditText o = (EditText)findViewById(R.id.txtorigem);
EditText d = (EditText)findViewById(R.id.txtdestino);
String _origem = o.getText().toString();
String _destino = d.getText().toString();
DBHelper dbHelper = new DBHelper(this.getApplicationContext());
newDB = dbHelper.getWritableDatabase();
Cursor c = newDB.rawQuery("SELECT origem, destino, hora FROM " + tableName +" WHERE origem='"+_origem+"' and destino='"+_destino+"'", null);
if (c != null) {
if (c.moveToFirst()) {
do {
String origem = c.getString(c.getColumnIndex("origem"));
String destino = c.getString(c.getColumnIndex("destino"));
String hora = c.getString(c.getColumnIndex("hora"));
results.add("Origem: " + origem + ", Destino: " + destino +" - Hora: "+hora);
}while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(), "Could not create or Open the database");
} finally {
if (newDB != null)
newDB.close();
}
}
}
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/btn_back" >
</ListView>
<Button
android:id="@+id/btn_back"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="Retroceder"
android:onClick="back" />
</RelativeLayout>
我尝试查询数据库基础对两个EditText的值,但我做错了一些事情:
02-26 06:30:31.626: E/AndroidRuntime(14068): FATAL EXCEPTION: main
02-26 06:30:31.626: E/AndroidRuntime(14068): Process: com.example.app.arr, PID: 14068
02-26 06:30:31.626: E/AndroidRuntime(14068): java.lang.NullPointerException
02-26 06:30:31.626: E/AndroidRuntime(14068): at com.example.app.arr.MainActivity.openAndQueryDatabase(MainActivity.java:70)
02-26 06:30:31.626: E/AndroidRuntime(14068): at com.example.app.arr.MainActivity.access$0(MainActivity.java:66)
02-26 06:30:31.626: E/AndroidRuntime(14068): at com.example.app.arr.MainActivity$1.onClick(MainActivity.java:39)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.view.View.performClick(View.java:4438)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.view.View$PerformClick.run(View.java:18422)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.os.Handler.handleCallback(Handler.java:733)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.os.Looper.loop(Looper.java:136)
02-26 06:30:31.626: E/AndroidRuntime(14068): at android.app.ActivityThread.main(ActivityThread.java:5017)
02-26 06:30:31.626: E/AndroidRuntime(14068): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 06:30:31.626: E/AndroidRuntime(14068): at java.lang.reflect.Method.invoke(Method.java:515)
02-26 06:30:31.626: E/AndroidRuntime(14068): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
02-26 06:30:31.626: E/AndroidRuntime(14068): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-26 06:30:31.626: E/AndroidRuntime(14068): at dalvik.system.NativeStart.main(Native Method)
由我意识到这个错误显示,当我尝试从EditText获得价值,但无法弄清楚解决方案。 MainActivity line 70:String _origem = o.getText().toString();
请发布'MainActivity'类代码 –
发布MainActivity – Galion
您能发布您的activity_main布局文件吗? – Giacomoni