-3
我目前在我的程序中遇到了麻烦。我想显示一个TextView“元素”的价值,但我有一个错误“显示java.lang.NullPointerException”错误:Android中的NullPointerException异常
这是我的代码:
ElementsDatabaseAdapter.java
package com.lipi.worldofelements;
import android.content.Context;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Edna on 1/11/2016.
*/
public class ElementDatabaseAdapter extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "elementdatabase";
private static final String DATABASE_TABLE = "ELEMENT";
private static final int DATABASE_VERSION = 1;
private static final String UID = "_id";
private static final String SYMBOL = "symbol";
private static final String NAME = "name";
private static final String ATOMNUMBER = "atomic_number";
private static final String ATOMMASS = "atomic_mass";
private Context context;
private static final String CREATE_TABLE = "CREATE TABLE "
+ DATABASE_TABLE + "("
+ UID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ATOMNUMBER + " INTEGER, "
+ SYMBOL + " CHAR(5), "
+ NAME + " VARCHAR(50), "
+ ATOMMASS + " VARCHAR(50));";
private static final String DROP_TABLE = "DROP TABLE IF EXISTS " + DATABASE_TABLE;
public ElementDatabaseAdapter(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
Message.message(context, "constructor called");
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
Message.message(context, "onCreate called");
} catch (SQLException e) {
Message.message(context, "" + e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
db.execSQL(DROP_TABLE);
onCreate(db);
Message.message(context, "onUpdate called");
} catch (SQLException e) {
Message.message(context, "" + e);
}
}
}
MainActivity.java
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
NavigationView navigationView = null;
Toolbar toolbar = null;
TextView txtNumber, txtSymbol, txtName, txtAtomMass;
Cursor cursor;
Button btnH, btnLi;
private static final String DATABASE_NAME = "elementdatabase";
private static final String DATABASE_TABLE = "ELEMENT";
private static final String SYMBOL = "symbol";
private static final String NAME = "name";
private static final String ATOMNUMBER = "atomic_number";
private static final String ATOMMASS = "atomic_mass";
ElementDatabaseAdapter databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
databaseHelper = new ElementDatabaseAdapter(this);
SQLiteDatabase db = databaseHelper.getWritableDatabase();
txtNumber = (TextView) findViewById(R.id.txtElemNum);
txtSymbol = (TextView) findViewById(R.id.txtElemSym);
txtName = (TextView) findViewById(R.id.txtElemName);
txtAtomMass = (TextView) findViewById(R.id.txtElemAtom);
btnH = (Button) findViewById(R.id.btnH);
btnLi = (Button) findViewById(R.id.btnLi);
//Set the fragment activity
MainFragment fragment = new MainFragment();
FragmentTransaction fragmentTransaction =
getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
public void searchElement(View view) {
String Li = "Li";
SQLiteDatabase db = databaseHelper.getWritableDatabase();
try {
cursor = db.rawQuery("SELECT * from " + DATABASE_TABLE + " WHERE " + SYMBOL + " LIKE '" + Li + "'", null);
int i1 = cursor.getColumnIndex(ATOMMASS);
if (cursor.getCount() == 0) {
Toast.makeText(this, "No Record Found", Toast.LENGTH_LONG).show();
} else {
cursor.moveToNext();
txtAtomMass.setText(String.valueOf(cursor.getInt(i1)));
}
}catch (Exception e){
Message.message(this, ""+e);
}
}
添加完整错误日志猫。 – jinkal
引起:java.lang.NullPointerException at com.lipi.worldofelements.MainActivity.searchElement(MainActivity.java:188) –