我是一個新手,並試圖爲在線投票做一個android應用程序。我剛剛設計了佈局,但不幸的是,我面臨渲染問題和空指針異常。如何防止我的應用程序崩潰?
當我從MainActivity打開一個活動時,我只能看到一個白色屏幕!活動的順序如下:
MainActivity --> Instructions or AdminLogin --> UserLogin or RegisterCandidate
即使經過數小時的谷歌搜索,我無法找出確切的問題。我已經在StackOverflow本身檢查了幾個答案,但未能弄清楚什麼是錯的。
的錯誤跟蹤,如下所示:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.palakjain.onlinevotingschool/com.example.palakjain.onlinevotingschool.AdminLogin}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2412)
at android.app.ActivityThread.access$600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5388)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.suniljain.onlinevotingschool.AdminLogin.onCreate(AdminLogin.java:39)
at android.app.Activity.performCreate(Activity.java:5141)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1084)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2307)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2412)
at android.app.ActivityThread.access$600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5388)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
MainActivity代碼:
public class MainActivity extends AppCompatActivity {
Button btnConductVoting, btnInstructions, btnSkipInstructions;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnConductVoting = (Button) findViewById(R.id.btnConductVoting);
btnInstructions = (Button) findViewById(R.id.btnInstructions);
btnSkipInstructions = (Button) findViewById(R.id.btnSkipInstructions);
btnConductVoting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AdminLogin.class);
startActivity(i);
}
});
btnInstructions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, Instructions.class);
startActivity(i);
}
});
btnSkipInstructions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, UserLogin.class);
startActivity(i);
}
});
}
}
指令的代碼:
public class Instructions extends AppCompatActivity{
Button btnStartVoting;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnStartVoting = (Button) findViewById(R.id.btnStartVoting);
btnStartVoting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Instructions.this, UserLogin.class);
startActivity(i);
}
});
}
}
後臺管理代碼:
public class AdminLogin extends AppCompatActivity{
Button btnAdminLogin;
EditText etUsername;
EditText etPassword;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnAdminLogin = (Button) findViewById(R.id.btnAdminLogin);
etUsername = (EditText) findViewById(R.id.etAdminPassword);
etPassword = (EditText) findViewById(R.id.etAdminPassword);
btnAdminLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(etUsername.getText().toString().equals("administrator") && etPassword.getText().toString().equals("password")){
Intent i = new Intent(AdminLogin.this, RegisterCandidate.class);
startActivity(i);
}
}
});
}
}
用戶登陸代碼:
public class UserLogin extends AppCompatActivity{
//TextView tvUserForgotPassword;
TextView tvNewUserSignUp;
//Button btnUserLogIn;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tvNewUserSignUp = (TextView) findViewById(R.id.tvNewUserSignUp);
tvNewUserSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(UserLogin.this, NewUser.class);
startActivity(i);
}
});
}
}
RegisterCandidate代碼:
public class RegisterCandidate extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
NEWUSER代碼:
public class NewUser extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
UPDATE1:我已被建議在答案的所有更改,當我點擊MainActivity中的「SKIP INSTRUCTIONS」按鈕時,我的應用程序仍然崩潰。此外,當我點擊AdminLogin Activity中的「登錄」按鈕時,應用程序崩潰。我該怎麼辦?
更新2:我指的是What is a NullPointerException, and how do I fix it?但還是無法修復這個錯誤!
你增加你的活動清單? –
@Palak Jain和你不能在java上使用'=='檢查變量值,你必須使用'.equals'而不是'==' –
是的,我有@SudheeshR –