首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onBackPressed不工作

onBackPressed不工作
EN

Stack Overflow用户
提问于 2015-04-02 14:31:08
回答 3查看 640关注 0票数 0

应用程序运行时不会调用onBackPressed方法,因此我无法正确退出应用程序我添加了一条日志消息,但我看不到它在任何地方被调用,这可能是问题所在

MainActivity

代码语言:javascript
复制
@Override
public void onBackPressed() {
    Log.v(TAG, "=== onBackPressed start ===");

    if (GoogleSocial.onBackPressed())
        return;
    else
        super.onBackPressed();

    Log.v(TAG, "=== onBackPressed end ===");
}

GoogleSocial

代码语言:javascript
复制
public class GoogleSocial {
private static final String TAG = "Chartboost";

static Chartboost s_cb = null;
static Activity s_act = null;
private static AppLovinSdk sdk;


public static void init(final Activity act, final String appId, final   String appSign, String mopubId, boolean isPaid) {
    s_act = act;
    act.runOnUiThread(new Runnable() {
        public void run() {
            Chartboost.startWithAppId(act, appId, appSign);
            Chartboost.setLoggingLevel(Level.ALL);
            AppLovinSdk.initializeSdk(s_act);

        }
    });


}

public static void showBanner() {

}

public static void hideBanner() {

}
public static void showInterstitialAdForSdkKey( final String sdkKey){
    Log.v(TAG, "showFullScreen");           

    sdk = AppLovinSdk.getInstance("bIEl5bkQbMybxFHahXaFxgSMsK2MesEF8qDLfXN1BEFQMiPam5EP9qe8eAhADrxCe8X", new AppLovinSdkSettings(), s_act);
    AppLovinInterstitialAd.show(s_act);

    s_act.runOnUiThread( new Runnable() {

        public void run() {

            AppLovinInterstitialAd.show(sdk, s_act);
    }
});

}
public static void showAd() {
    Log.v(TAG, "Aggregator.showAd() is called...");

    s_act.runOnUiThread(new Runnable() {                            
        public void run() {
//              s_cb.showMoreApps();
            showInterstitialAdForSdkKey("bIEl5bkQbMybxFHahXaFxgSMsK2MesEF8qDLfXN1BEFQMiPam5EP9qe8eAhADrxCe8X");
            Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT);
//              Chartboost.showRewardedVideo(CBLocation.LOCATION_DEFAULT);
//              Chartboost.showMoreApps(CBLocation.LOCATION_DEFAULT);
        }         
    });
}

public static void showMoregame() {
    Log.v(TAG, "showMoreApps() is called...");

    s_act.runOnUiThread(new Runnable() {                            
        public void run() {
//              s_cb.showMoreApps();
//              Chartboost.showInterstitial(CBLocation.LOCATION_DEFAULT);
//              Chartboost.showRewardedVideo(CBLocation.LOCATION_DEFAULT);
            Chartboost.showMoreApps(CBLocation.LOCATION_DEFAULT);
        }         
    });
}

public static void onStart() {

     Chartboost.onStart(s_act);    

}
public static void onPause() {

    Chartboost.onPause(s_act);
}

public static void onStop() {

    Chartboost.onStop(s_act);

   }

public static void onResume() {
    Chartboost.onResume(s_act);
}

public static void onDestroy() {

    Chartboost.onDestroy(s_act);

}
public static boolean onBackPressed() {

    if (Chartboost.onBackPressed())
        return true;
    return true;
}
}
EN

回答 3

Stack Overflow用户

发布于 2015-04-02 15:03:49

如果您的onBackPressed()不起作用,那么您可以重写onKeyDown()方法,并找出键是否为Back

代码语言:javascript
复制
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        // Do something.
    }

这可能对你有用。

票数 0
EN

Stack Overflow用户

发布于 2015-04-02 15:14:09

如果您希望应用程序响应back按钮,则必须始终调用super.onBackPressed()。在被覆盖的onBackPressed()中,有一个if else条件,可能会让它跳过对super.onBackPressed()的调用。

票数 0
EN

Stack Overflow用户

发布于 2015-04-02 15:48:14

试试这个,会有帮助的

代码语言:javascript
复制
 @Override
public void onBackPressed() {
    // TODO Auto-generated method stub

     AlertDialog.Builder ald = new AlertDialog.Builder(MainActivity.this);
        ald.setTitle("Exit");
        ald.setMessage("Are you sure you want to quit.?");
        ald.setPositiveButton("Ok", new DialogInterface.OnClickListener()
        {
            @Override
            public void onClick(DialogInterface dialog, int which) 
            {
                moveTaskToBack(true);
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);
            }
        });

        ald.setNegativeButton("Cancel", null);
        ald.show();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29406417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档