2016-12-14 4 views
0
私はGoogleとFacebookが私を得る私のapp.Theエラーにサインアップに統合しようとしていた

た:「SignInButtonレイアウトタグへの予期しないキャストしたボタン」私はせずに、キャストの問題を解決することを好むだろうError:SignInButtonへの予期せぬキャスト。レイアウトタグがあるボタン

私のレイアウトファイルに変更が多すぎます。あまりにも魅力的ではないので、私のレイアウトには通常のサインインボタンを使用したくない。

マイMainActivityコード:

public class LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener { 

    private LoginButton loginButton; 
    private TextView info; 
    private CallbackManager callbackManager; 
    private String UserID; 
    private SQLiteDatabase db,db1,db2; 
    private String name; 
    private String email; 
    public String classtext1,sectiontext1; 
    Button sign_in; 
    EditText emaileditext,nameedittext; 
    private Cursor cursor; 
    Boolean does_user_exist = Boolean.FALSE; 
    private GoogleApiClient mGoogleApiClient; 
    private TextView mStatusTextView; 
    private ProgressDialog mProgressDialog; 
    private static final String TAG = "SignInActivity"; 
    private static final int RC_SIGN_IN = 9001; 
    private GoogleSignInOptions googleSignInOptions; 

    //my own variables 
    private String google_email; 
    private String google_name; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); //Register with dashboard 

     setContentView(R.layout.activity_login); 


     googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestEmail().requestId().build(); 
     mGoogleApiClient = new GoogleApiClient.Builder(this).enableAutoManage(this,this).addApi(Auth.GOOGLE_SIGN_IN_API,googleSignInOptions).build(); 

     SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); //google Integration 
     signInButton.setSize(SignInButton.SIZE_WIDE); //ERROR #1 


     signInButton.setScopes(googleSignInOptions.getScopeArray()); 


     signInButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
       startActivityForResult(signInIntent, RC_SIGN_IN); 
      } 
     }); 




     AppEventsLogger.activateApp(this); 
     callbackManager = CallbackManager.Factory.create(); //For Facebook Integration 

     loginButton = (LoginButton) findViewById(R.id.login_button); //ERROR #2 

     LoginManager.getInstance().logInWithReadPermissions(this,Arrays.asList("email","public_profile")); 
     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 

       //---------------- 
       GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), 
         new GraphRequest.GraphJSONObjectCallback() { 
          @Override 
          public void onCompleted(JSONObject object,GraphResponse response) { 
           try { 
            TimeTableDatabaseHelper timetabledatabasehelper = new TimeTableDatabaseHelper(LoginActivity.this); 
            db = timetabledatabasehelper.getReadableDatabase(); 

            AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); 
            builder.setTitle("Some More Information..."); 
            builder.setMessage("Why Don't You Enter your Class And Section so You Don't have to Enter them again?"); 
            final EditText classtext = new EditText(LoginActivity.this); 
            classtext.setHint("Enter Your class"); 
            final EditText sectiontext = new EditText(LoginActivity.this); 
            sectiontext.setHint("Enter Your Section"); 

            builder.setPositiveButton("Go!", new DialogInterface.OnClickListener() { 
             @Override 
             public void onClick(DialogInterface dialogInterface, int i) { 
              classtext1 = classtext.getText().toString(); 
              sectiontext1 = sectiontext.getText().toString(); 



             } 
            }); 

            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
             @Override 
             public void onClick(DialogInterface dialog, int which) { 
              dialog.cancel(); 
             } 
            }); 

            builder.show(); 

            email = object.getString("email"); 
            name = object.getString("name"); 

            if(email.equals("")){ 
             email = "None"; 
            } 

            ContentValues values1 = new ContentValues(); 
            values1.put("NAME",name); 
            values1.put("EMAIL",email); 
            values1.put("CLASS",classtext1); 
            values1.put("SECTION",sectiontext1); 

            db.insert("LOGIN",null,values1); 




           } catch(JSONException ex) { 
            ex.printStackTrace(); 
           } 
          } 
         }); 
       Bundle parameters = new Bundle(); 
       parameters.putString("fields", "id,name,email,gender, birthday"); 
       request.setParameters(parameters); 
       request.executeAsync(); 



       AlertDialog.Builder alertdialog = new AlertDialog.Builder(LoginActivity.this); 
       alertdialog.setTitle("Successfully Authenticated!"); 
       alertdialog.setMessage("You're all set To Start Using Bulletin! Click OK to Begin"); 
       alertdialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         Intent intent = new Intent(LoginActivity.this,MainActivity.class); 
         startActivity(intent); 
        } 
       }); 
       alertdialog.show(); 



      } 

      @Override 
      public void onCancel() { 

      } 

      @Override 
      public void onError(FacebookException e) { 

      } 
     }); 




    } 

と、これは私のレイアウトコードです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_login" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.arjunrao.bulletin.LoginActivity" 
    android:background="@drawable/bookshelf"> 


    <Button 
     android:text="SIGN UP WITH GOOGLE" 
     android:paddingLeft="34dp" 
     android:paddingRight="34dp" 
     android:layout_width="300dp" 
     android:layout_height="40dp" 
     android:textColor="#E0E0E0" 
     android:drawablePadding="24dp" 
     android:layout_marginBottom="43dp" 

     android:fontFamily="sans-serif" 
     android:textSize="14dp" 

     android:background="#d34836" 
     android:id = "@+id/sign_in_button" 
     android:elevation="24dp" 
     android:layout_above="@+id/login_button" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:text="SIGN UP WITH FACEBOOK" 
     android:paddingLeft="34dp" 
     android:paddingRight="34dp" 
     android:layout_width="100dp" 
     android:layout_height="40dp" 
     android:textColor="#E0E0E0" 
     android:drawablePadding="24dp" 
     android:layout_marginBottom="90dp" 

     android:fontFamily="sans-serif" 
     android:textSize="14dp" 

     android:background="#3b5998" 
     android:id = "@+id/login_button" 

     android:elevation="24dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignStart="@+id/sign_in_button" 
     android:layout_alignEnd="@+id/sign_in_button" /> 

    <TextView 
     android:text="@string/intro_message" 
     android:textColor="#E0E0E0" 
     android:textSize="30sp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="17dp" 
     android:id="@+id/textView3" 
     android:fontFamily="sans-serif" 
     android:textStyle="normal|bold" 
     android:textAlignment="center" 
     android:layout_below="@+id/textView2" 
     android:layout_alignParentStart="true" /> 

    <TextView 
     android:text="Bulletin" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fontFamily="casual" 
     android:textStyle="bold|italic" 

     android:textSize="90sp" 
     android:layout_marginTop="24dp" 
     android:id="@+id/textView2" 
     android:textAlignment="center" 
     android:textColor="#FFFFFF" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" /> 

</RelativeLayout> 
+0

レイアウトには通常のボタンがあります。レイアウトでSignInButtonにするか、アクティビティコードのButtonにキャストする必要があります。 – ootinii

答えて

0

にClassCastExceptionが明らかです。 Facebook/Googleのログインボタンを使用してください。 基本的に、これを解決する簡単な方法の1つは、ボタンのスタイルをカスタマイズすることです。

<style name="CustomStyle"> 
    <item name="android:background">@drawable/whatever</item> 
    <item name="android:layout_marginTop">10dp</item> 
    <item name="android:layout_marginBottom">10dp</item> 
    <item name="android:layout_gravity">center_horizontal</item> 
    <item name="android:textSize">@dimen/whatever</item> 
</style> 

は、その後、あなたのボタン

<com.facebook.widget.LoginButton 
     xmlns:fb="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/loginFacebookButton" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     fb:login_text="@string/loginFacebookButton" 
     fb:logout_text="" 
     style="@style/CustomStyle"/> 

詳細/意見のためのチェックcustomize Android Facebook Login buttonにスタイルを設定します。

関連する問題