私は非常に多くのソリューションを見て、すべてを適用しましたが、まだ私のコードでnullポインタの例外を取得します。ここで私のコードは誰もができるだけ速く見て返信しています。前もって感謝します。Java.lang.nullpointerexception in androidのデータベース保存クエリーで
DBHandler.javaクラスコードが
public class DBHandler extends SQLiteOpenHelper {
//Database Version
private static final int DATABASE_VERSION=1;
// Database Name
private static final String DATABASE_NAME="Patient.db";
//Table Name
private static final String TABLE_NAME="patientDetail";
//Table Columns Names
private static final String ID="id";
private static final String NAME="name";
private static final String ADDRESS="address";
private static final String PHONE_NUMBER="phone_number";
//Constructor
public DBHandler(Context context)
{
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
//Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_PATIENT_DETAIL_TABLE="CREATE TABLE "+TABLE_NAME+"("
+ ID+" INTEGER PRIMARY KEY AUTOINCREMENT,"
+NAME+" TEXT,"
+ADDRESS +" TEXT,"
+PHONE_NUMBER + " TEXT)" ;
db.execSQL(CREATE_PATIENT_DETAIL_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//Drop older tables if exist
db.execSQL("DROP TABLE IF EXIST "+TABLE_NAME);
/// Create Table again
onCreate(db);
}
public boolean insertData(String name,String address, String ph_no)
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values= new ContentValues();
values.put(NAME,name);
values.put(ADDRESS,address);
values.put(PHONE_NUMBER,ph_no);
long result = db.insert(TABLE_NAME,null,values);
if(result == -1)
return false;
else
return true;
}
}
//insertPatient.java Class Code
public class insertPatient extends Fragment {
DBHandler mydb=null;
EditText editname,editaddress,editph_no;
Button btn_adddata;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.insert_patient, container, false);
mydb = new DBHandler(getActivity());
editname=(EditText) rootView.findViewById(R.id.insert_name);
editname=(EditText) rootView.findViewById(R.id.insert_address);
editname=(EditText) rootView.findViewById(R.id.insert_ph_no);
btn_adddata=(Button) rootView.findViewById(R.id.insert_button);
btn_adddata.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adddata();
}
});
return rootView;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mydb = new DBHandler(getActivity());
}
public void adddata()
{
mydb = new DBHandler(getActivity());
Toast.makeText(getActivity(), "working button", Toast.LENGTH_LONG).show();
try {
boolean isinserted = mydb.insertData(editname.getText().toString(), editaddress.getText().toString(), editph_no.getText().toString());
if (isinserted) {
Toast.makeText(getActivity(), "data saved", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getActivity(), "data Not saved", Toast.LENGTH_LONG).show();
}
}
catch (Exception e) {
Toast.makeText(getActivity(), String.valueOf(e), Toast.LENGTH_LONG).show();
}
}
}
私はdbhandlerオブジェクトのinitializtionため、getactivity()、にgetcontext()とgetbasecontextを()ボタンのいずれかが初期化されているようなので、多くのソリューションをapplliedたりしていない、また、多くを作りました私のdbハンドラはさまざまなソリューションで変更されましたが、同じエラーが発生しました。私は断片クラスを使用しているので、私はアクティビティのための私の解決策をチェックしなかったので、私はそれを試しました。
へのラインがスタックトレースを提供することを例外
編集をスロー
あなたのコード内での行の下に表示さ! –
あなたのlogcatを追加してください –
私はデータベースとドンで新しいです、どのようにlogcatを追加する方法とstacktraceを取得する方法を知っている。ありがとう –