android - Android 中强制关闭

标签 android android-activity crash forceclose

运行应用程序时出现空指针异常,我必须强制关闭。我认为 我无法以正确的形式管理数据库。

package sarah.android;

import android.R.integer;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SelesMeter2Activity extends Activity implements OnClickListener {
    EditText ed1;
    EditText ed2;
    Button b1;
    Button b2;
    Intent in;
    signup obj=new signup();

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ed1=(EditText) findViewById(R.id.ed1);
        ed2=(EditText) findViewById(R.id.ed2);
        b1= (Button) findViewById(R.id.bt1);
        b2= (Button) findViewById(R.id.bt2);
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        //log in
        if (arg0.getId() == R.id.bt1)
        {
            String name=ed1.getText().toString();
            int pass = Integer.parseInt(ed2.getText().toString());
            if (obj.c.getString(0) == name&&obj.c.getInt(1) == pass)
            {
                in = new Intent(this,secondview.class);
                startActivity(in);
            }
            else
            {
                Toast.makeText(this, "please sing up first", 1000).show();
            }
        }
        else
            if (arg0.getId()==R.id.bt2)
            {
                in=new Intent(this,signup.class);
                startActivity(in);
            }
    }
}

第二个 Activity 用于注册新用户并将他们的信息放入我的数据库中:

package sarah.android;

import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Toast;

public class signup extends Activity {
    SQLiteDatabase sql;
    Cursor c;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.singupx);
        Intent in = getIntent();
        Bundle b = in.getExtras();
        String n = b.getString("x");
        int p = Integer.valueOf(b.getString("y"));

        sql = openOrCreateDatabase("db",0, null);
        sql.execSQL("CREATE TABLE if not exists employee " +
                    " (name text NOT NULL UNIQUE" +
                    ",password integer NOT NULL UNIQUE)");
        sql.execSQL("insert into employee(name) values(" +
                    "'"+n+"') ");
        Toast.makeText(this,"Data inserted", 1000).show();
    }
}

最佳答案

这……非常简单。在您的第一个 Activity 中,您没有将 "x""y" 放入 Intent 中。在第二个 Activity 中,您尝试获取它们。

...
Bundle b=in.getExtras(); // perhaps this is null
String n=b.getString("x"); // or this one
int p=Integer.valueOf(b.getString("y")); // or this one

关于android - Android 中强制关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11821585/

相关文章:

android - 执行 Activity 而不在屏幕上显示布局

crash - nsight EE 和 nvvp 在 Ubuntu 16.10 上启动期间均崩溃

ios - NSArray 错误 : NSCFArray objectAtIndex index (5) beyond bounds (5)

java - 无法将 CircularSeekBar 添加到我的项目中

android - 使用 achartengine,如何在不使用 x 标签的情况下设置 x 轴值?

android - 带有 Activity 和 fragment 的自定义抽屉导航

java - 当应用程序从后台进入前台时,如何显示特定 Activity ?

c# - 最新的 VS Mac 更新导致 Xamarin Android 中的 SetContentView(resourceid) 出现 SIGSEGV

android - 无法创建平台 OpenGL 上下文

android - 如何在运行时生成 ImageView