简体   繁体   English

编译时的Android MySQLite问题

[英]Android MySQLite problems when compiling

Im progressing with creating a simple database for a project at school, however the code itself shows no errors, but when i run the project in an emulator, it spits out an error. 我正在为学校的项目创建一个简单的数据库,但是代码本身未显示任何错误,但是当我在模拟器中运行该项目时,它会吐出一个错误。 I Think the problem is stemming from the AlertDialog, but im not sure whats wrong with the syntax Here is a copy of my code.. 我认为问题出在AlertDialog上,但是我不确定语法有什么问题。这是我的代码的副本。

package com.example.bash1.sqlitediss;

import android.app.AlertDialog; 
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; 
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.view.View.OnClickListener;

public class MainActivity extends AppCompatActivity {

DatabaseHelper myDb;
private Button button3;
Button buttonviewall;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myDb = new DatabaseHelper(this);
    buttonviewall = (Button) findViewById(R.id.button3);
    viewAll();

}
{

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent1 = new Intent(MainActivity.this, DatabaseActivity.class);
            startActivity(intent1);
        }
    });
    {
    }

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });
}

public void viewAll() {
    buttonviewall.setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Cursor res = myDb.getAllData();
                    if (res.getCount() == 0)
                    // show message
                    {
                        showMessage("Error", "Nothing found");
                        return;
                    }

                    StringBuffer buffer = new StringBuffer();
                    while (res.moveToNext()) {
                        buffer.append("ID :" + res.getString(0) + "\n");
                        buffer.append("Name :" + res.getString(1) + "\n");
                        buffer.append("Datereceived :" + res.getString(2) + "\n");
                        buffer.append("Expirydate :" + res.getString(3) + "\n\n");
                    }
                    // Show all data
                    showMessage("Data", buffer.toString());

                }
            }

    );
}


public void showMessage(String title, String Message) {
      AlertDialog.Builder builder = new AlertDialog.Builder(this);
      builder.setCancelable(true);
      builder.setTitle(title);
      builder.setMessage(Message);
      builder.show();

    builder.show();
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

} }

Activitymain.xml Activitymain.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<include layout="@layout/content_main" />

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    android:src="@android:drawable/ic_dialog_email" />

Error message log: 错误消息日志:

04-20 06:40:57.114 17890-17890/com.example.bash1.sqlitediss E/AndroidRuntime: FATAL EXCEPTION: main
                                                                          Process: com.example.bash1.sqlitediss, PID: 17890
                                                                          java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.bash1.sqlitediss/com.example.bash1.sqlitediss.MainActivity}: java.lang.NullPointerException
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                              at android.os.Looper.loop(Looper.java:136)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5001)
                                                                              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:785)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
                                                                              at dalvik.system.NativeStart.main(Native Method)
                                                                           Caused by: java.lang.NullPointerException
                                                                              at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:68)
                                                                              at android.support.v7.app.AppCompatDelegateImplV7.<init>(AppCompatDelegateImplV7.java:145)
                                                                              at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:28)
                                                                              at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:41)
                                                                              at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:188)
                                                                              at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:170)
                                                                              at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:502)
                                                                              at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:174)
                                                                              at com.example.bash1.sqlitediss.MainActivity.<init>(MainActivity.java:35)
                                                                              at java.lang.Class.newInstanceImpl(Native Method)
                                                                              at java.lang.Class.newInstance(Class.java:1208)
                                                                              at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
                                                                              at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2101)
                                                                              at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                                                                              at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                              at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                              at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                              at android.os.Looper.loop(Looper.java:136) 
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5001) 
                                                                              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:785) 
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                                                                              at dalvik.system.NativeStart.main(Native Method) 

You have a NullPointerException at lines: 2184, 2233, 135, 1196, 102. Can you comment those lines under this answer. 您在第2184、2233、135、1196、102行处有NullPointerException。您能否在此答案下注释这些行。 So I can take a look at them and see what is going on. 所以我可以看看它们,看看发生了什么。

Your stacktrace has the "caused by" exception below the RuntimeException wrapper you have posted with specific details. 您的stacktrace在您发布的具有特定详细信息的RuntimeException包装器下面具有“ cause by”异常。

Anyway, one certain way your code can cause an NPE is that buttonviewall is not initialized before you're calling ViewAll() which calls a method on buttonviewall . 无论如何,一个特定的方式你的代码可以导致NPE是buttonviewall你打电话之前未初始化ViewAll()其调用的方法buttonviewall


After edited question: 编辑问题后:

Remove the 去除

}
{

The first } ends the onCreate() method and the second { starts a new initializer block that is executed at instance initialization phase. 第一个}结束onCreate()方法,第二个{启动一个新的初始化器块,该块在实例初始化阶段执行。 You need to execute that code as part of onCreate() as <init> is too early for eg findViewById() . 您需要将该代码作为onCreate()一部分执行,因为对于<init>现在还为时过早,例如findViewById()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM