임 구글 등의 인/아웃 버튼을 로그인 Play 게임 서비스를 구현하기 위해 노력하고 인/아웃 버튼을 로그인은 여기 제안 : https://developers.google.com/games/services/training/signin구글 플레이 게임 서비스는
그러나 때마다
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
또는
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
을
이 호출됩니다. 응용 프로그램이 다운됩니다.
문제는 - 기본 레이아웃에이 버튼을 올바르게 추가하고 사용하는 방법을 잘 모르겠습니다.
그래서 나는 그것을 얻지 못합니다 ... 로그인을/아웃 버튼에 올바르게 추가하지 않았거나 레이아웃에 문제가 있습니까? 실제로 어떻게이 버튼을 메인 레이아웃에 추가합니까? 나는이 버튼들, 코드의 조각들만을 완벽하게 구현하는 인터넷에서 어떤 소스도 찾지 못했습니다.
보기와 관련이있을 수 있습니까? 나는 그것을 얻지 못한다 - 만약 View.OnClickListener를 구현한다면,이 버튼들은 그들이 할당 된 뷰를 어떻게 알 수 있는가 ... 나는 광고를위한 또 다른 뷰를 만들었지 만 그것의 특별한 뷰를 만들었다. 임은 단지 손실 :(여기
내 주요 배치된다
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- sign-in button -->
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- sign-out button -->
<Button
android:id="@+id/sign_out_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign Out"
android:visibility="gone" />
</LinearLayout>
그리고 내 주요 활동에서 무엇을 먹으 렴은 : 당신이 있기 때문에
public class AndroidLauncher extends AndroidApplication implements AdInterface, GameHelperListener, ActionResolver, View.OnClickListener {
int launched = 0;
Intent intent;
private final String AD_UNIT_ID = "------";
private final int SHOW_ADS = 1;
private final int HIDE_ADS = 0;
protected AdView adView;
private GameHelper gameHelper;
ConnectivityManager cm;
NetworkInfo ni;
protected Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case SHOW_ADS:
adView.setVisibility(View.VISIBLE);
//AdRequest adRequest = new AdRequest.Builder().build();
//adView.loadAd(adRequest);
break;
case HIDE_ADS:
adView.setVisibility(View.GONE);
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (launched == 0){
setContentView(R.layout.main);
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
intent = new Intent(this, VideoActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
initialize(new Game(this, this), cfg);
if (gameHelper == null) {
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
}
gameHelper.setup(this);
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(AD_UNIT_ID);
adView.setId(12345); // this is an arbitrary id, allows for relative positioning in createGameView()
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM);
adView.setLayoutParams(params);
adView.setBackgroundColor(Color.BLACK);
addContentView(adView, params);
startAdvertising(adView);
launched = 1;
}
//*@Override
//*public void onStart(){
//* super.onStart();
//* gameHelper.onStart(this);
//*}
@Override
public void onStop(){
super.onStop();
gameHelper.onStop();
}
@Override
public void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
gameHelper.onActivityResult(request, response, data);
}
private void startAdvertising(AdView adView) {
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
}
@Override
public void showAds(boolean show) {
// TODO Auto-generated method stub
handler.sendEmptyMessage(show ? SHOW_ADS : HIDE_ADS);
}
@Override
public boolean getSignedInGPGS() {
// TODO Auto-generated method stub
//return false;
return gameHelper.isSignedIn();
}
@Override
public void loginGPGS() {
// TODO Auto-generated method stub
try {
runOnUiThread(new Runnable(){
public void run() {
gameHelper.beginUserInitiatedSignIn();
}
});
} catch (final Exception ex) {
}
}
@Override
public void submitScoreGPGS(int score) {
// TODO Auto-generated method stub
}
@Override
public void unlockAchievementGPGS(String achievementId) {
// TODO Auto-generated method stub
Games.Achievements.unlock(gameHelper.getApiClient(), achievementId);
//Games.Achievements.
}
//@Override
public void revealAchievementGPGS(String achievementId) {
// TODO Auto-generated method stub
Games.Achievements.reveal(gameHelper.getApiClient(), achievementId);
//Games.Achievements.
}
@Override
public void getLeaderboardGPGS() {
// TODO Auto-generated method stub
}
@Override
public void getAchievementsGPGS() {
// TODO Auto-generated method stub
if (gameHelper.isSignedIn()) {
startActivityForResult(Games.Achievements.getAchievementsIntent(gameHelper.getApiClient()), 101);
}
else if (!gameHelper.isConnecting()) {
loginGPGS();
}
}
@Override
public void onSignInFailed() {
// TODO Auto-generated method stub
// Sign in has failed. So show the user the sign-in button.
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
@Override
public void onSignInSucceeded() {
// TODO Auto-generated method stub
//loginGPGS();
// show sign-out button, hide the sign-in button
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
// (your code here: update UI, enable functionality that depends on sign in, etc)
}
public boolean isNetworkConnected() {
cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.sign_in_button) {
// start the asynchronous sign in flow
gameHelper.beginUserInitiatedSignIn();
}
else if (v.getId() == R.id.sign_out_button) {
// sign out.
gameHelper.signOut();
// show sign-in button, hide the sign-out button
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
}
}
또한이 단추는 전혀 표시되지 않습니다. 그저 레이아웃에 제대로 추가하고 주 활동에서 사용하는 방법을 알려주지는 않습니다. ( – Redbu11