【问题标题】:Android: Checking Password before starting the appAndroid:在启动应用程序之前检查密码
【发布时间】:2012-11-08 12:02:36
【问题描述】:

我正在创建一个简单的 Android 应用程序,其中第一个屏幕将向我们显示一个 EditText 和一个按钮,在 EditText 中输入“1234”(不包括引号)然后单击按钮,应用程序将转移控制权到另一个活动。

下面是部分代码:

final EditText enterPass;
Button submit;
enterPass = (EditText) findViewById(R.id.password);
submit = (Button) findViewById(R.id.submit);
    submit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String pass = enterPass.getText().toString();
            if(pass.contentEquals("1234")){
                Intent adder = new Intent("com.example.pointsadder.Adder");
                  startActivity(adder); 
            }
        }
    });

Eclipse在项目的任何部分都没有显示任何错误,但是当我运行项目时,输入“1234”并单击“提交”,我收到消息:“对不起。应用程序com .example.adder 意外..."

编辑:这是来自 DDMS 的日志报告:

    [2012-11-08 15:27:52 - ddms] null
java.lang.NullPointerException
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
    at com.android.ddmlib.Client.sendAndConsume(Client.java:575)
    at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
    at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
    at com.android.ddmlib.Client.getJdwpPacket(Client.java:672)
    at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
    at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

【问题讨论】:

    标签: java android fatal-error


    【解决方案1】:

    你能发布你的日志输出吗?我会尝试的第一件事是将pass.contentEquals("1234") 更改为pass.equals("1234") 也试试:

    Intent adder = new Intent(Password.this, Adder.class);
    

    【讨论】:

    • 我是 Android 开发新手,不知道在哪里可以找到日志。你能告诉我在哪里可以找到它吗?
    • 切换到 pass.equals("1234") 也没有用,还有什么问题?
    • 检查 DDMS 视图中的“logcat”选项卡。你应该看到某种异常抛出。您的“其他活动”是否列在 AndroidManifest.xml 中????
    • 我已经添加了日志,请检查一下。
    • 改变 Intent 的东西有效,但这是我在以前的应用程序中使用的,它根本没有给任何麻烦。怎么了。你能给我更多关于这方面的信息吗?
    【解决方案2】:

    你应该试试这个:

    if(pass.equals("1234")){
        Intent adder = new Intent("com.example.pointsadder.Adder");
        startActivity(adder);
    }
    

    或者,如果您使用不区分大小写的密码,您可以将.equals 替换为.equalsIgnoreCase

    另外,你应该像这样声明你的 Intent:

    Intent adder = new Intent(Password.this, Adder.class);
    startActivity(adder);
    

    【讨论】:

    • 改变 Intent 的东西有效,但这是我在以前的应用程序中使用的,它根本没有给任何麻烦。怎么了。你能给我更多关于这方面的信息吗?
    • 应用会从背景图片和背景音乐开始,等待一段时间,然后使用意图启动下一个活动。我不确定使用的 try 和 catch 语句,因为这是来自我用来学习的教程。这是代码:imgur.com/MAASm
    【解决方案3】:

    试试这个

    pass.equalsIgnoreCase("1234");
    

    这可能有效。 也用下面的改变意图语法

    Intent adder = new Intent(*currentActivity*.this,Adder.class);
    startActivity(adder);
    

    还在 manifest 文件中添加 Adder 活动。

    【讨论】:

    • 改变 Intent 的东西有效,但这是我在以前的应用程序中使用的,它根本没有给任何麻烦。怎么了。你能给我更多关于这方面的信息吗?
    【解决方案4】:
    You should try this:   
    
     final EditText enterPass;
        Button submit;
        enterPass = (EditText) findViewById(R.id.password);
        submit = (Button) findViewById(R.id.submit);
            submit.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String pass = enterPass.getText().toString().trim();
                    if(pass.equals("1234")){
                        Intent adder = new Intent(PresentActivity.this,SecondActivity.class);
                          startActivity(adder); 
                    }
                }
            });
    

    别忘了在 Manifest 文件中提到 SecondActivity

    【讨论】:

    • 改变 Intent 的东西有效,但这是我在以前的应用程序中使用的,它根本没有给任何麻烦。怎么了。你能给我更多关于这方面的信息吗?
    猜你喜欢
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多