gpt4 book ai didi

来自 PreferenceFragment 的 AndroidRestart Activity

转载 作者:行者123 更新时间:2023-11-29 19:11:30 25 4
gpt4 key购买 nike

我在这样的 SettingsActivity 中声明了我的 PreferenceFragment

public class ChordsSettings extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getFragmentManager().beginTransaction()
.replace(android.R.id.content, new MyPreferenceFragment())
.commit();
}

public static class MyPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings_preferences);
}
}
}

我是这样做的,没有在 MainActivity 之上创建 fragment ,因为我需要能够使用后退按钮从 SettingsActivity 获取到 MainActivity,这似乎是实现该目标的唯一途径。

我需要在首选项更改后重新启动 MainActivity

我尝试从 preferenceFragment 发送一个 BroadcastsendBroadcast() 不能在静态上下文中使用。有没有其他方法可以实现此目的?

最佳答案

您的 MainActivity 应该看起来像这样。请注意,当单击 btnGoToSetting 时,会调用 finish() 方法。这是为了关闭当前 Activity 。

MainActivity.java

public class MainActivity extends Activity {

Button btnGoToSetting;

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

btnGoToSetting = (Button)findViewById(R.id.btnGoToSetting);
btnGoToSetting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(intent);
}
});
}

}

SettingsActivity.java

public class SettingsActivity extends Activity {

Button btnSavePreferences;

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

btnSavePreferences = (Button)findViewById(R.id.btnSavePreferences);
btnSavePreferences.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Here is where you save all your preferences
yourSaveFunction();
finish();
Intent intent = new Intent(SettingsActivity.this, MainActivity.class);
startActivity(intent);
}
});
}

@Override
public void onBackPressed() {
finish();
Intent intent = new Intent(SettingsActivity.this, MainActivity.class);
startActivity(intent);
}

}

注意:还有另一种方法可以在 MainActivity 中刷新数据,方法是使数据异步,这样每次数据更改时都会自动刷新。

关于来自 PreferenceFragment 的 AndroidRestart Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45142175/

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