Java 我不知道为什么我的程序老是崩溃
我设法改变了代码中的一些东西,我不是java方面的专家,但我不知道问题出在哪里。该应用允许我登录,但在任何东西真正弹出之前崩溃 我试着改正我犯过的错误,但仍然一事无成Java 我不知道为什么我的程序老是崩溃,java,android,Java,Android,我设法改变了代码中的一些东西,我不是java方面的专家,但我不知道问题出在哪里。该应用允许我登录,但在任何东西真正弹出之前崩溃 我试着改正我犯过的错误,但仍然一事无成 package com.example.dksimplelogin; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import androi
package com.example.dksimplelogin;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class Welcome extends AppCompatActivity {
private TextView mTextMessage;
private Button Logout;
private FirebaseAuth firebaseAuth;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
Logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
}
private void logout()
{
firebaseAuth.signOut();
finish();
startActivity(new Intent(Welcome.this, MainActivity.class));
}
private void account()
{
startActivity(new Intent(Welcome.this, account.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId())
{
case R.id.LogoutMenu:
{
logout();
}
case R.id.ProfileMenu:
{
account();
}
case R.id.SettingsMenu:
{
}
}
return super.onOptionsItemSelected(item);
}
}
调试日志
2019年7月26日10:42执行任务:[:app:assembleDebug]
10:43渐变构建在32秒28毫秒内完成
10:43会话“应用”:启动活动时出错
10:43执行任务:[:app:assembleDebug]
10:43渐变构建在4秒275毫秒内完成
10:50仿真程序:进程已完成,退出代码为0
10:54执行任务:[:app:assembleDebug]
10:54渐变构建在2秒726毫秒内完成
使用findViewbyId启动按钮实例,然后尝试作为注销
Logout=(Button)findViewbyId(/*your button id*/);
Logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
在onCreate方法中添加几行代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
//Add these to initialize the objects
mTextMessage = (TextView)findViewById(R.id.name_of_textview_in_xml);
Logout = (Button)findViewById(R.id.name_of_button_in_xml);
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseAuth mAuth = FirebaseAuth.getInstance();
// Add the above lines to your code
Logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
}
注意:使用布局xml文件中给定的实际id在xml中命名\u文本视图\u
同样地,用布局xml文件中给定的实际id替换\u按钮\u的名称\u,似乎不会崩溃,因为它以代码
0
退出,这意味着程序只是结束了,因为它只是完成了任务。您还没有初始化按钮和firebase auth对象调用对象上的方法,而没有初始化它会导致空指针异常,应用程序当然会崩溃。为什么有两个不同的auth变量?问这个问题的人有两个auth变量。。我不知道他为什么用它。完整的代码仍然没有显示。。初始化没有坏处,最好是初始化。。。因此,可以防止调用未初始化的对象上的方法可能导致的任何nullPointerException:)@阿施施