Android setOnClickListener不适用于PreferenceFragment
我在Android设置菜单中有一个Android setOnClickListener不适用于PreferenceFragment,android,android-settings,Android,Android Settings,我在Android设置菜单中有一个CheckBoxPreference和一个EditTextPreference。我要做的是在单击EditTextPreference时取消选中复选框。除非我尝试添加侦听器,否则一切正常。问题似乎是从一个空的“custFragment”开始的。应用程序只是崩溃了。代码如下: XML 而且 package com.triunedev.foodeze; import android.os.Bundle; import android.preference.Prefe
CheckBoxPreference
和一个EditTextPreference
。我要做的是在单击EditTextPreference
时取消选中复选框。除非我尝试添加侦听器,否则一切正常。问题似乎是从一个空的“custFragment”开始的。应用程序只是崩溃了。代码如下:
XML
而且
package com.triunedev.foodeze;
import android.os.Bundle;
import android.preference.PreferenceFragment;
public class SettingsFragment extends PreferenceFragment {
public SettingsFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
求你了,我哪里做错了?谢谢 您的custFragment
为空
您还需要在事务期间将片段添加到backstack
将代码替换为:
FragmentManager fm = getFragmentManager();
Fragment fragment = new SettingsFragment();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(android.R.id.content, fragment, "fragTag");
ft.addToBackStack("fragTag");
ft.commit();
fm.executePendingTransactions();
现在使用以下方法重用片段:
custFragment = (SettingsFragment) getFragmentManager().findFragmentByTag("fragTag");
编辑
要解决后退按钮中的问题,请在设置活动中覆盖onBackPressed()
,并添加以下代码:
@Override
public void onBackPressed() {
if (getFragmentManager.getBackStackEntryCount() > 0)
getFragmentManager.popBackStackImmediate();
else super.onBackPressed();
}
这对我来说非常有用,但它似乎会使后退按钮在第一次单击时变为空白屏幕,然后在第二次单击时变为主要活动。有办法解决吗?我试过了,但没用。我也尝试过使用参数,但仍然无法使其发挥作用。如果你就这个问题发布一个新的问题会更好…这样每个人都可以给出建议。。
custFragment = (SettingsFragment) getFragmentManager().findFragmentByTag("fragTag");
@Override
public void onBackPressed() {
if (getFragmentManager.getBackStackEntryCount() > 0)
getFragmentManager.popBackStackImmediate();
else super.onBackPressed();
}