gpt4 book ai didi

java - 如何使用 onCreateView 而不是 onCreate 在运行时更改应用程序的主题

转载 作者:行者123 更新时间:2023-12-02 13:24:00 26 4
gpt4 key购买 nike

所以我现在有这个代码来更改我的应用程序的主题 -

public class SettingsActivity extends AppCompatActivity{
public static int themeCheck = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (themeCheck == 1){
setTheme(R.style.Dark);
}
else{
setTheme(R.style.Light);
}
setContentView(R.layout.fragment_settings);
}
// some other code changing other stuff

我正在和类的另一个人一起开发这个项目,他正在制作实际的框架代码,结果发现他使用了 fragment 并且没有将 Activity 扩展到 AppCompat。因此,我必须将代码合并到的类看起来像这样 -

public class SettingsFrament extends android.support.v4.app.Fragment 
implements MainActivityFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = localInflater.inflate(R.layout.fragment_settings,
container, false);
getActivity().setTitle(getString(R.string.settings_fragment_title));
return rootView;

//This rootView and other bits that that guy gave me is redirecting the app
//to my activity from the menu bar that he has.

我想知道如何将我的代码与此类合并。 (我不必合并它,我可以写下代码,只是不知道如何在onCreateView中使用setTheme和其他方法。)

如有任何帮助,我们将不胜感激。

最佳答案

在 onCreateView 回调中尝试这个。

    final Context theme1 = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme1);
final Context theme2 = new ContextThemeWrapper(getActivity(), R.style.yourCustomTheme2);

LayoutInflater localInflater;

getActivity().setTitle(getString(R.string.settings_fragment_title));

if (themeCheck == 1){
localInflater = inflater.cloneInContext(theme1);
}
else{
localInflater = inflater.cloneInContext(theme2);
}

View rootView = localInflater.inflate(R.layout.fragment_settings,
container, false);

return rootView;

关于java - 如何使用 onCreateView 而不是 onCreate 在运行时更改应用程序的主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43447884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com