Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法启动活动组件信息-Android_Java_Android_Xml_Firebase Authentication - Fatal编程技术网

Java 无法启动活动组件信息-Android

Java 无法启动活动组件信息-Android,java,android,xml,firebase-authentication,Java,Android,Xml,Firebase Authentication,我正在为android创建一个移动应用程序,在谷歌下载连接后,我遇到了一个问题 应用程序崩溃。有人能给我一个理由和如何附上它吗 主要活动触手可及 public class MainActivity extends AppCompatActivity { GoogleSignInClient mGoogleSignInClient; private int RC_SIGN_IN = 3; SignInButton signInButton; @Override protected void on

我正在为android创建一个移动应用程序,在谷歌下载连接后,我遇到了一个问题

应用程序崩溃。有人能给我一个理由和如何附上它吗

主要活动触手可及

public class MainActivity extends AppCompatActivity {
GoogleSignInClient mGoogleSignInClient;
private int RC_SIGN_IN = 3;
SignInButton signInButton;

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

    signInButton = findViewById(R.id.sign_in_button);

    signInButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.sign_in_button:
                    signIn();
                    break;
                // ...
            }
        }
    });
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

}
private void signIn() {
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();
    startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        handleSignInResult(task);
    }
}
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class);

        Intent intent = new Intent(MainActivity.this, MenuActivity.class);
        startActivity(intent);
    } catch (ApiException e) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information.
        Log.w("TAG", "signInResult:failed code=" + e.getStatusCode());
        // updateUI(null);
    }
}
public类MainActivity扩展了AppCompatActivity{
GoogleSignInClient mGoogleSignInClient;
私有内部RC_符号=3;
SignInButton SignInButton;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
signInButton=findViewById(R.id.sign_in_按钮);
signInButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
开关(view.getId()){
案例R.id.登录按钮:
签名();
打破
// ...
}
}
});
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestEmail()
.build();
mGoogleSignInClient=GoogleSignIn.getClient(this,gso);
}
私人无效签名(){
Intent-signinint=mGoogleSignInClient.getsigninint();
startActivityForResult(签名、注册);
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
//从GoogleSignInClient.GetSignInent(…)启动Intent返回的结果;
if(requestCode==RC\u登录){
//此调用返回的任务始终已完成,无需附加
//听众。
Task Task=GoogleSignIn.GetSignedAccountFromIntent(数据);
handleSignInResult(任务);
}
}
私有void handleSignInResult(任务完成任务){
试一试{
GoogleSignInAccount account=completedTask.getResult(ApiException.class);
意向意向=新意向(MainActivity.this、MenuActivity.class);
星触觉(意向);
}捕获(APIE){
//ApiException状态代码表示详细的故障原因。
//有关更多信息,请参阅GoogleSignInstationCodes类参考。
Log.w(“标记”、“签名结果:失败代码=“+e.getStatusCode());
//updateUI(null);
}
}
}

登录后的目标活动:

public class MenuActivity extends AppCompatActivity  {

GoogleSignInClient mGoogleSignInClient;
Button logoutBtn;
TextView userName;
ImageView profileImage;
private GoogleSignInOptions gso;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

    logoutBtn=(Button)findViewById(R.id.button_wyl);
    profileImage=(ImageView)findViewById(R.id.profileImage);
    userName = findViewById(R.id.name);
    logoutBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()) {
                // ...
                case R.id.button_wyl:
                    signOut();
                    break;
                // ...
            }
        }
    });

    GoogleSignInAccount acct = GoogleSignIn.getLastSignedInAccount(this);
    if (acct != null) {
        String personName = acct.getDisplayName();
        Uri personPhoto = acct.getPhotoUrl();

        userName.setText(personName);
        Glide.with(this).load(String.valueOf(personPhoto)).into(profileImage);

    }
}

private void signOut() {
    mGoogleSignInClient.signOut()
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    Toast.makeText(MenuActivity.this, "Signed out Successfully", Toast.LENGTH_LONG).show();
                    finish();
                }
            });
}
公共类菜单活动扩展了AppCompative活动{
GoogleSignInClient mGoogleSignInClient;
按钮logoutBtn;
文本视图用户名;
图像视图轮廓图像;
谷歌私人签名gso;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestEmail()
.build();
mGoogleSignInClient=GoogleSignIn.getClient(this,gso);
logoutBtn=(按钮)findviewbyd(R.id.Button_wyl);
profileImage=(ImageView)findViewById(R.id.profileImage);
用户名=findViewById(R.id.name);
logoutBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
开关(view.getId()){
// ...
外壳R.id.按钮(wyl):
签出();
打破
// ...
}
}
});
GoogleSignInAccount账户=GoogleSignIn.GetLastSignedAccount(此账户);
如果(帐户!=null){
字符串personName=acct.getDisplayName();
Uri personPhoto=acct.getPhotoUrl();
userName.setText(personName);
将(String.valueOf(personPhoto)).Glide.with(this.load)加载到(profileImage)中;
}
}
私有无效签出(){
mGoogleSignInClient.signOut()
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Toast.makeText(MenuActivity.this,“已成功注销”,Toast.LENGTH_LONG.show();
完成();
}
});
}
}

例外情况:

E/AndroidRuntime:致命异常:主 进程:com.example.goodmath,PID:1780 java.lang.RuntimeException:无法启动activity ComponentInfo{com.example.goodmath/com.example.goodmath.MenuActivity}: java.lang.NullPointerException:尝试调用虚拟方法“void” android.widget.Button.setOnClickListener(android.view.view$OnClickListener)' 关于空对象引用 位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中 在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:193) 位于android.app.ActivityThread.main(ActivityThread.java:6669) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:java.lang.NullPointerException:尝试调用虚拟方法“void” android.widget.Button.setOnClickListener(android.view.view$OnClickListener)' 关于空对象引用 位于com.example.goodmath.MenuActivity.onCreate(MenuActivity.java:46) 位于android.app.Activity.performCreate(Activity.java:7136) 位于android.app.Activity.performCreate(Activity.java:7127) 在android.app.instrum上
java.lang.NullPointerException: Attempt to invoke virtual method 'void 
android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' 
on a null object