使用twitter按钮登录的结构显示为灰色

Jan*_*Jan 11 twitter android twitter-fabric

我按照说明使用Fabric在我的自定义应用程序中实现登录.

问题是,当我运行我的应用程序时,按钮显示为灰色.

以下是我的堆栈跟踪错误:

03-20 11:06:32.456    6509-6509/com.jan.simplesharing E/Twitter? Must Initialize Fabric before using singleton()

03-20 11:06:32.546    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 46
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 49
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.556    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 50
03-20 11:06:32.566    6509-6509/com.jan.simplesharing E/IMGSRV? :0: PVRDRMOpen: TP3, ret = 52
Run Code Online (Sandbox Code Playgroud)

但我也在我的活动中初始化了面料.

这是一个片段:

import io.fabric.sdk.android.Fabric;

import com.twitter.sdk.android.Twitter;
import com.twitter.sdk.android.core.TwitterAuthConfig;
import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.Result;
import com.twitter.sdk.android.core.TwitterException;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.identity.TwitterLoginButton;

public class MainActivity extends Activity {

//copied key and secret from fabric
private static final String TWITTER_KEY = "my key here"; 
private static final String TWITTER_SECRET = "my secret here";

private TwitterLoginButton loginButton;

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

    /* Twitter */
    TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
    Fabric.with(this, new Twitter(authConfig));

    loginButton = (TwitterLoginButton) findViewById(R.id.twitter_login_button);
    loginButton.setCallback(new Callback<TwitterSession>() {
        @Override
        public void success(Result<TwitterSession> result) {
            // Do something with result, which provides a TwitterSession for making API calls
        }

        @Override
        public void failure(TwitterException exception) {
            // Do something on failure
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    /* Twitter */
    loginButton.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*kyi 16

setContentView(R.layout.activity_main);

/* Twitter */
TwitterAuthConfig authConfig = new TwitterAuthConfig(TWITTER_KEY, TWITTER_SECRET);
Fabric.with(this, new Twitter(authConfig));
Run Code Online (Sandbox Code Playgroud)

膨胀Twitter按钮之前,您必须初始化Fabric .因为否则当调用Twitter按钮构造函数时,它不知道如何连接twitter api.这就是错误描述简而言之.

6509-6509/com.jan.simplesharing E/Twitter? Must Initialize Fabric before using singleton()
Run Code Online (Sandbox Code Playgroud)

通常,您可以在Application课程中初始化Fabric .这是他们在他们的示例展示应用程序中所做的:https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/App.java#L98