MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.entrurl);
button =(Button)findViewById(R.id.button);
WebView = (WebView) findViewById(R.id.webView);
button.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onClick(View v) {
String url =editText.getText().toString();
db.AddHistory(url);
WebView.getSettings().setLoadsImagesAutomatically(true);
WebView.getSettings().setJavaScriptEnabled(true);
WebView.getSettings().getBuiltInZoomControls();
WebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
WebView.loadUrl("https://"+url);
WebView.setWebViewClient(new Mybrowser());
}
});
}
历史课程" historydb"
public class historydb extends SQLiteOpenHelper {
public static final String DB_NAME ="SurfIt_DB";
private static final int DB_VERSION = 1;
public historydb(Context context)
{
super(context,DB_NAME,null,DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db =getReadableDatabase();
String sqlhistory = "CREATE TABLE IF NOT EXISTS HISTORY(id INTEGER PRIMARY KEY AUTOINCREMENT, history VAECHAR);";
db.execSQL(sqlhistory);
}
public void AddHistory(String his)
{
SQLiteDatabase db =getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("history", his);
db.insert("HISTORY",null,contentValues);
db.close();
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int j)
{
String sqlhistory = "DROP TABLE IF EXISTS HISTORY";
db.execSQL(sqlhistory);
onCreate(db);
}
}
错误
---------崩溃的开始
04-29 01:28:27.649 5068-5068/com.example.apoorv.surfit E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.apoorv.surfit, PID: 5068
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.apoorv.surfit.historydb.AddHistory(java.lang.String)' on a null object reference
at com.example.apoorv.surfit.MainActivity$1.onClick(MainActivity.java:47)
at android.view.View.performClick(View.java:5269)
at android.view.View$PerformClick.run(View.java:21548)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5740)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:766)
抱歉收缩不好
我不明白其中有什么错误
答案 0 :(得分:0)
您收到空指针异常,因为变量 db 在db.AddHistory(url);
很可能你有historydb db;
这样的代码只声明 db
它没有实例化(设置)db对象,因此它可能为null。
您需要实例化数据库,例如在使用 db = new historydb(this);
之前db
。
我建议使用: -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new historydb(this); //<<<< ADDED
editText = (EditText) findViewById(R.id.entrurl);
button =(Button)findViewById(R.id.button);
WebView = (WebView) findViewById(R.id.webView);
button.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetJavaScriptEnabled")
@Override
public void onClick(View v) {
String url =editText.getText().toString();
db.AddHistory(url);
WebView.getSettings().setLoadsImagesAutomatically(true);
WebView.getSettings().setJavaScriptEnabled(true);
WebView.getSettings().getBuiltInZoomControls();
WebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
WebView.loadUrl("https://"+url);
WebView.setWebViewClient(new Mybrowser());
}
});
}
//<<<< ADDED
。