我不确定为什么我的程序不断崩溃

时间:2019-07-26 09:59:17

标签: java android

我设法更改了代码中的某些内容,但我不是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毫秒内完成

3 个答案:

答案 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