我的 android 登录应用不幸停止了

My android login app unfortunately stopped

我的简单应用程序不幸停止错误。
麻烦解决一下。

我不需要任何权限

这是我的 android 主 activity:

package vk.com.login_simple;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.*;


public class MainActivity extends AppCompatActivity {
private EditText username=(EditText) findViewById(R.id.username);
private EditText password=(EditText) findViewById(R.id.password);
private Button login=(Button) findViewById(R.id.login);
private Button reset=(Button) findViewById(R.id.reset);
private Button exit=(Button) findViewById(R.id.exit);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("Login App");
        setContentView(R.layout.activity_main);

    }
    public void login(View view){
if(username.getText().toString().equals("admin")&&password.getText().toString().equals("password")){
    Toast.makeText(getApplicationContext(),"Login Success",Toast.LENGTH_LONG).show();
//your code here
}else{
    Toast.makeText(getApplicationContext(),"Wrong Username / Password",Toast.LENGTH_LONG).show();
}
    }

    public void reset(View view) {
        username.setText("");
        password.setText("");
        Toast.makeText(this,"Reset success",Toast.LENGTH_LONG).show();
    }
    public void exit(){
        //empty
    }
}
package vk.com.login_simple;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.*;


public class MainActivity extends AppCompatActivity {
private EditText username;
private EditText password;
private Button login;
private Button reset;
private Button exit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        username=(EditText) findViewById(R.id.username);
        password=(EditText) findViewById(R.id.password);
        login=(Button) findViewById(R.id.login);
        reset=(Button) findViewById(R.id.reset);
        exit=(Button) findViewById(R.id.exit);
        setTitle("Login App");


    }
    public void login(View view){
if(username.getText().toString().equals("admin")&&password.getText().toString().equals("password")){
    Toast.makeText(getApplicationContext(),"Login Success",Toast.LENGTH_LONG).show();
//your code here
}else{
    Toast.makeText(getApplicationContext(),"Wrong Username / Password",Toast.LENGTH_LONG).show();
}
    }

    public void reset(View view) {
        username.setText("");
        password.setText("");
        Toast.makeText(this,"Reset success",Toast.LENGTH_LONG).show();
    }
    public void exit(){
        //empty
    }
}

您可以在 onCreate() 方法中创建 findViewById 后使用它们。

将你的解析放在 onCreate() 方法中

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    username=(EditText) findViewById(R.id.username);
    password=(EditText) findViewById(R.id.password);
    login=(Button) findViewById(R.id.login);
    reset=(Button) findViewById(R.id.reset);
    exit=(Button) findViewById(R.id.exit);
}

findViewById 仅在您 setContentView() 定义布局的根视图后工作,以显示可以找到视图的位置。如果您在外部调用它 Android 不知道如何以及在哪里为您找到视图。

所以您必须做的是将所有 findViewById() 代码放在 onCreate() 内和 setContentView() 之后。

private EditText username;
private EditText password;
private Button login;
private Button reset;
private Button exit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("Login App");

        username=(EditText) findViewById(R.id.username);
        password=(EditText) findViewById(R.id.password);
        login=(Button) findViewById(R.id.login);
        reset=(Button) findViewById(R.id.reset);
        exit=(Button) findViewById(R.id.exit);

    }

在 onCreate 方法中解析

public class MainActivity extends AppCompatActivity {
private EditText username;
private EditText password;
private Button login;
private Button reset;
private Button exit;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("Login App");
        setContentView(R.layout.activity_main);
        username=(EditText) findViewById(R.id.username);
        password=(EditText) findViewById(R.id.password);
        login=(Button) findViewById(R.id.login);
        reset=(Button) findViewById(R.id.reset);
        exit=(Button) findViewById(R.id.exit);
    }
}

而不是解析使用 butterknife

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.username)
    private EditText username;
    @BindView(R.id.password)
    private EditText password;
    @BindView(R.id.login)
    private Button login;
    @BindView(R.id.reset)
    private Button reset;
    @BindView(R.id.exit)
    private Button exit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("Login App");
        setContentView(R.layout.activity_main);
    }
}

你必须像 belllow 这样在 onCreate 方法中初始化

  @Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);       
     setContentView(R.layout.activity_main);

     EditText username=(EditText) findViewById(R.id.username);
     EditText password=(EditText) findViewById(R.id.password);
     Button login=(Button) findViewById(R.id.login);
     Button reset=(Button) findViewById(R.id.reset);
     Button exit=(Button) findViewById(R.id.exit);


}