Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 - Fatal编程技术网

Java 谷歌登录后Android应用程序崩溃

Java 谷歌登录后Android应用程序崩溃,java,android,Java,Android,Android Studio新手。我在测试我的应用程序时遇到了一个问题。在使用Google登录后,它会崩溃,并说“不幸的是,Aisier已停止”。我正在尝试在登录到导航抽屉后引导用户,该抽屉中还有他们的信息,如个人资料图片、姓名和电子邮件。我是不是遗漏了一些代码 MyNavigation.java: package com.example.android.aisier; import android.content.Intent; import android.graphics.Typefac

Android Studio新手。我在测试我的应用程序时遇到了一个问题。在使用Google登录后,它会崩溃,并说“不幸的是,Aisier已停止”。我正在尝试在登录到导航抽屉后引导用户,该抽屉中还有他们的信息,如个人资料图片、姓名和电子邮件。我是不是遗漏了一些代码

MyNavigation.java

package com.example.android.aisier;

import android.content.Intent;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.support.constraint.solver.SolverVariable;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.OptionalPendingResult;
import com.google.android.gms.common.api.ResultCallback;

public class Navigation extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mToggle;
    private ImageView photoImageView;
    private TextView nameTextView;
    private TextView emailTextView;
    private GoogleApiClient googleApiClient;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
        mToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
        mDrawerLayout.addDrawerListener(mToggle);
        NavigationView nvDrawer = (NavigationView) findViewById(R.id.nv);
        mToggle.syncState();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        setupDrawerContent(nvDrawer);

        photoImageView = (ImageView) findViewById(R.id.photoImageView);
        nameTextView = (TextView) findViewById(R.id.nameTextView);
        emailTextView = (TextView) findViewById(R.id.nameTextView);

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

        googleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
    }

    @Override
    protected void onStart() {
        super.onStart();

        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(googleApiClient);
        if (opr.isDone()) {
            GoogleSignInResult result = opr.get();
            handleSignInResult(result);
        } else {
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(@NonNull GoogleSignInResult googleSignInResult) {
                    handleSignInResult(googleSignInResult);
                }
            });
        }
    }

    private void handleSignInResult(GoogleSignInResult result) {
        if (result.isSuccess()) {

            GoogleSignInAccount account = result.getSignInAccount();
            nameTextView.setText(account.getDisplayName());
            emailTextView.setText(account.getEmail());

            Glide.with(this).load(account.getPhotoUrl()).into(photoImageView);

        } else {
            Intent intent = new Intent(this, SignIn.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (mToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    public void selectItemDrawer(MenuItem menuItem) {
        Fragment myFragment = null;
        Class fragmentClass;
        switch (menuItem.getItemId()) {
            case R.id.db:
                fragmentClass = Dashboard.class;
                break;
            case R.id.converter:
                fragmentClass = Converter.class;
                break;
            case R.id.location:
                fragmentClass = Location.class;
                break;
            case  R.id.translator:
                fragmentClass = Translate.class;
                break;
            case  R.id.memo:
                fragmentClass = Memo.class;
                break;
            default:
                fragmentClass = Dashboard.class;
        }
        try {
            myFragment = (Fragment) fragmentClass.newInstance();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.flcontent,myFragment).commit();
        menuItem.setChecked(true);
        setTitle(menuItem.getTitle());
        mDrawerLayout.closeDrawers();
    }
    private void setupDrawerContent(NavigationView navigationView) {
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                selectItemDrawer(item);
                return true;
            }
        });
    }

    @Override
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

    }
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.aisier.Navigation">
    <FrameLayout
        android:id="@+id/flcontent"
        android:background="@drawable/background"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </FrameLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nv"
        app:headerLayout="@layout/header"
        android:layout_width="264dp"
        android:layout_height="match_parent"
        android:background="@color/white"
        app:itemTextColor="@color/darkgrey"
        app:itemIconTint="@color/darkgrey"
        app:menu="@menu/navigationmenu"
        android:layout_gravity="start">
    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="160dp"
    android:background="@drawable/header"
    android:padding="20dp">

    <ImageView
        android:id="@+id/photoImageView"
        android:layout_width="75dp"
        android:layout_height="75dp" />
    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:textStyle="bold"
        android:layout_marginTop="5dp"/>
    <TextView
        android:id="@+id/emailTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:textSize="16dp"
        />

</LinearLayout>
package com.example.android.aisier;
导入android.content.Intent;
导入android.graphics.Typeface;
导入android.support.annotation.NonNull;
导入android.support.constraint.solver.SolverVariable;
导入android.support.design.widget.NavigationView;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.support.v4.widget.DrawerLayout;
导入android.support.v7.app.ActionBarDrawerToggle;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.MenuItem;
导入android.widget.FrameLayout;
导入android.widget.ImageView;
导入android.widget.TextView;
导入com.bumptech.glide.glide;
导入com.google.android.gms.auth.api.auth;
导入com.google.android.gms.auth.api.signin.GoogleSignInAccount;
导入com.google.android.gms.auth.api.signin.GoogleSignInOptions;
导入com.google.android.gms.auth.api.signin.GoogleSignInResult;
导入com.google.android.gms.common.ConnectionResult;
导入com.google.android.gms.common.api.GoogleAppClient;
导入com.google.android.gms.common.api.OptionalPendingResult;
导入com.google.android.gms.common.api.ResultCallback;
公共类导航扩展AppCompativeActivity实现GoogleAppClient.OnConnectionFailedListener{
私人抽屉布局mDrawerLayout;
私人行动bardrawertoggle mtogle;
私人影像视图photoImageView;
私有文本视图名称文本视图;
私有文本视图emailTextView;
私人GoogleapClient GoogleapClient;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u导航);
mDrawerLayout=(抽屉布局)findViewById(R.id.drawer);
mToggle=newactionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
mDrawerLayout.addDrawerListener(MTOGLE);
NavigationView nvDrawer=(NavigationView)findViewById(R.id.nv);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setupDrawerContent(nvDrawer);
photoImageView=(ImageView)findViewById(R.id.photoImageView);
nameTextView=(TextView)findViewById(R.id.nameTextView);
emailTextView=(TextView)findViewById(R.id.nameTextView);
GoogleSignenOptions gso=新建GoogleSignenOptions.Builder(GoogleSignenOptions.DEFAULT\u登录)
.requestEmail()
.build();
GoogleapClient=新的GoogleapClient.Builder(此)
.enableAutoManage(这个,这个)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build();
}
@凌驾
受保护的void onStart(){
super.onStart();
OptionalPendingResult opr=授权谷歌签名Napi.silentSignIn(谷歌客户端);
if(opr.isDone()){
GoogleSignInResult结果=操作获取();
handleSignInResult(结果);
}否则{
操作setResultCallback(新的ResultCallback(){
@凌驾
public void onResult(@NonNull GoogleSignInResult GoogleSignInResult){
handleSignInResult(谷歌SignInResult);
}
});
}
}
私有无效handleSignInResult(Google SignInResult结果){
if(result.issucess()){
GoogleSignInAccount account=result.getSignInAccount();
nameTextView.setText(account.getDisplayName());
emailTextView.setText(account.getEmail());
将(account.getPhotoUrl())加载到(photoImageView)中;
}否则{
意向意向=新意向(此,签名类);
intent.addFlags(intent.FLAG_活动_清除_顶部| intent.FLAG_活动_清除_任务| intent.FLAG_活动_新任务);
星触觉(意向);
}
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
如果(MTOGLE.onOptionsItemSelected(项目)){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
公共无效selectItemDrawer(MenuItem MenuItem){
片段myFragment=null;
类碎片类;
开关(menuItem.getItemId()){
案例R.id.db:
fragmentClass=Dashboard.class;
打破
案例R.id.转换器:
fragmentClass=Converter.class;
打破
案例R.id.位置:
fragmentClass=Location.class;
打破
案例R.id.translator:
fragmentClass=Translate.class;
打破
案例R.id.备忘录:
fragmentClass=Memo.class;
打破
违约:
fragmentClass=Dashboard.class;
}
试一试{
myFragment=(Fragment)fragmentClass.newInstance();
}
捕获(例外e){
e、 printStackTrace();
}
FragmentManager FragmentManager=getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flcontent,myFragment.commit();
menuItem.setChecked(true);
setTitle(menuItem.getTitle());
mDrawerLayout.closeDrawers();
}
私有void setupDrawerContent(导航视图导航视图){
navigationView.setNavigationItemSelectedListener(新建navigationView.OnNavigationItemSelectedListener()){
@凌驾
公共布尔值onNavigationItemSelected(@NonNull MenuItem item){
emailTextView = (TextView) findViewById(R.id.nameTextView);
emailTextView = (TextView) findViewById(R.id.emailTextView);