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