向上按钮从偏好片段到 return 到偏好 headers
up button from preference fragment to return to preference headers
我的应用有首选项 header,您可以在其中选择要启动的片段。在你进入某个片段后,我希望点击后退按钮再次显示 header,如果我在 header 显示给 return 我给其他人 activity 时再次按下.
我在 Activity 和 Fragment 中覆盖了 onOptionsItemSelected
,但它总是从 activity 调用操作,因为我试图将 fragment 和 activity 绑定到相同的操作。这是我的代码:
public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
@Override
protected boolean isValidFragment(String fragmentName) {
return SettingsFragment.class.getName().equals(fragmentName);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.app_preferences);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
我设法通过从 activity 中删除 onOptionsItemSelected
方法并保留内部片段来解决这个问题。现在,当我在片段内向上按时,它会转到 SettingsActivity
,当在 activity 内向上按时,它的行为类似于 onBackPressed()
。希望这对某人有所帮助。
我的应用有首选项 header,您可以在其中选择要启动的片段。在你进入某个片段后,我希望点击后退按钮再次显示 header,如果我在 header 显示给 return 我给其他人 activity 时再次按下.
我在 Activity 和 Fragment 中覆盖了 onOptionsItemSelected
,但它总是从 activity 调用操作,因为我试图将 fragment 和 activity 绑定到相同的操作。这是我的代码:
public class SettingsActivity extends AppCompatPreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preference_headers, target);
}
@Override
protected boolean isValidFragment(String fragmentName) {
return SettingsFragment.class.getName().equals(fragmentName);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupActionBar();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setupActionBar() {
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.app_preferences);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
startActivity(new Intent(getActivity(), SettingsActivity.class));
return true;
}
return super.onOptionsItemSelected(item);
}
}
我设法通过从 activity 中删除 onOptionsItemSelected
方法并保留内部片段来解决这个问题。现在,当我在片段内向上按时,它会转到 SettingsActivity
,当在 activity 内向上按时,它的行为类似于 onBackPressed()
。希望这对某人有所帮助。