Android - 后退按钮不会调用onResume()

时间:2015-03-04 22:05:02

标签: android back-button android-theme onresume up-button

我是这个的初学者,所以请耐心等待。

在我的应用中,我希望应用的主题根据用户偏好进行更新。我有一个主题部分的首选项页面,这是我的MainActivity的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String userTheme = preferences.getString("theme_setting", "Blue");
    if (userTheme.equals("Blue"))
        setTheme(R.style.BlueTheme);
    else if (userTheme.equals("Red"))
        setTheme(R.style.RedTheme);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

    //Initiate buttons
    quadButton = (Button) findViewById(R.id.quadButton);
    sssButton = (Button) findViewById(R.id.sssButton);
    ssaButton = (Button) findViewById(R.id.ssaButton);
    areaButton = (Button) findViewById(R.id.areaButton);
    volumeButton = (Button) findViewById(R.id.volumeButton);
    conversionButton = (Button) findViewById(R.id.conversionButton);

    buttonListeners();
}

@Override
protected void onResume() {

    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String userTheme = preferences.getString("theme_setting", "Blue");
    if (userTheme.equals("Blue"))
        setTheme(R.style.BlueTheme);
    else if (userTheme.equals("Red"))
        setTheme(R.style.RedTheme);
    super.onResume();
    setContentView(R.layout.activity_main);

    //Initiate buttons
    quadButton = (Button) findViewById(R.id.quadButton);
    sssButton = (Button) findViewById(R.id.sssButton);
    ssaButton = (Button) findViewById(R.id.ssaButton);
    areaButton = (Button) findViewById(R.id.areaButton);
    volumeButton = (Button) findViewById(R.id.volumeButton);
    conversionButton = (Button) findViewById(R.id.conversionButton);

    buttonListeners();
}

按下向上按钮从设置屏幕返回MainActivity,但按下系统后退按钮时不起作用。我尝试使用onResume()方法解决这个问题,但似乎在运行时似乎永远不会实际调用onResume。此外,在Android Studio中,它表示"方法onResume()从未使用"

这里出了什么问题?任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

onResume()没有参数。您还应该使用@Override进行注释以防止出现此类错误。

基本上,您已经创建了一个新方法onResume(),该方法不会作为Activity生命周期的一部分进行调用。