无法使用Intents&创建Android登录页面时遇到问题活动

时间:2011-04-24 19:36:58

标签: android login android-activity android-intent

我正在尝试为Android创建通用登录屏幕。我希望该程序检查是否列出了用户名和密码(当前是硬编码的)。如果列出了该帐户,您将进入名为menuTest的新屏幕。我有基本的登录工作(没有活动或意图)。但是当我尝试添加意图时,我收到错误。我怎样才能解决这个问题?以下是我的示例代码。

下面是一些包含崩溃和logcat屏幕截图的链接(编辑:链接已死)。

http://i.stack.imgur.com/ve7OL.png

http://i.stack.imgur.com/KLeQa.png

感谢。


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Login extends Activity {
    // Declare our Views, so we can access them later
    private EditText etUsername;
    private EditText etPassword;
    private Button btnLogin;
    private Button btnCancel;
    private TextView lblResult;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set Activity Layout
    setContentView(R.layout.login);

    // Get the EditText and Button References
    etUsername = (EditText)findViewById(R.id.username);
    etPassword = (EditText)findViewById(R.id.password);
    btnLogin = (Button)findViewById(R.id.login_enter);
    btnCancel = (Button)findViewById(R.id.login_cancel);
    lblResult = (TextView)findViewById(R.id.result);

    // Set Click Listener
    btnLogin.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Check Login
            String username = etUsername.getText().toString();
            String password = etPassword.getText().toString();

            if(username.equalsIgnoreCase("USER") && password.equals("132465")){
                //lblResult.setText("Login successful");
                Intent loginIntent = new Intent(this, menuTest.class);
                startActivity(loginIntent);
            }

            else {
                lblResult.setText("Login Failed");
            }
        }
    });


    btnCancel.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // Close the application
            finish();
        }
    });
}
}

4 个答案:

答案 0 :(得分:2)

尝试将Intent loginIntent = new Intent(this, menuTest.class);更改为Intent loginIntent = new Intent(Login.this, menuTest.class);

答案 1 :(得分:0)

这可能是由两个原因引起的

1)目标活动(menuTest)可能未在清单xml中定义。

2)您可能需要在UI线程内运行,例如

    Login.this.runOnUiThread(new Runnable() 
    public void run() {
        //lblResult.setText("Login successful");
        Intent loginIntent = new Intent(this, menuTest.class);
        startActivity(loginIntent);
        }
    });

答案 2 :(得分:0)

我已经使用了主要活动的setContetView函数,这样你不必担心意图

答案 3 :(得分:0)

j1478你问“抱歉打扰了,但你能解释一下Login.this与此有什么不同吗? - jl478 4月24日20:03”

在你的问题的评论中回答了这个问题。

“因为他在按钮onClickListener中说'this','this'指的是onClickListener而非活动 - Thomas Owers 4月24日21:11”

onClickListener是一个内部类,所以这引用了该内部类的实例。要获取Login实例,您需要说Login.this,您恰好也可以访问它,因为内部类继承了其包含类的范围变量。