2016-01-12 63 views
-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); 
 
     } 
 
    }

+1

添加完整错误日志猫。 – jinkal

+0

引起:java.lang.NullPointerException at com.lipi.worldofelements.MainActivity.searchElement(MainActivity.java:188) –

回答

0
 at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:515)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)  
                     at dalvik.system.NativeStart.main(Native Method)  
                    Caused by: java.lang.NullPointerException 
                     at com.lipi.worldofelements.MainActivity.searchElement(MainActivity.java:188) 
                     at java.lang.reflect.Method.invokeNative(Native Method)  
                     at java.lang.reflect.Method.invoke(Method.java:515)  
                     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)  
                     at android.view.View.performClick(View.java:4640)  
相关问题