我设法更改了代码中的某些内容,但我不是Java方面的专家,但是我不知道问题的发生方式和位置。该应用程序使我可以登录,但在实际弹出任何窗口之前崩溃。
我试图消除我犯过的错误,但仍然没有实现
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);
}
}
调试日志
26/07/2019 10:42执行任务:[:app:assembleDebug]
10:43 Gradle构建在32 s 28 ms中完成
10:43会话“应用”:错误启动活动
10:43执行任务:[:app:assembleDebug]
10:43 Gradle构建在4 s 275 ms中完成
10:50模拟器:进程结束,退出代码为0
10:54执行任务:[:app:assembleDebug]
10:54 Gradle构建在2秒726毫秒内完成
答案 0 :(得分:0)
使用findViewbyId初始化按钮实例,然后尝试以
退出 Logout=(Button)findViewbyId(/*your button id*/);
Logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
答案 1 :(得分:0)
请使用以下包含 Firebase身份验证实例的代码,而您尚未定义注销ID。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
mAuth = FirebaseAuth.getInstance();
Logout=findViewbyId(R.id.logout_btn); // Just change your id of button.
Logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
logout();
}
});
}
答案 2 :(得分:0)
在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();
}
});
}
注意:: name_of_textview_in_xml ,其实际ID在您的布局xml文件中给出 同样,将 name_of_button_in_xml 替换为布局xml文件中给出的实际ID