我在SharedPreferences布局文件中有一个ImageView我正在尝试获取引用,所以我可以在我的PrefsActivity类中创建一个监听器。到目前为止,我没有运气使用findViewById获取引用,所有内容都返回为null。
设置如下:
PrefsActivity.class
public class PrefsActivity extends UnifiedSherlockPreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
// Set header resource MUST BE CALLED BEFORE super.onCreate
setHeaderRes(R.xml.pref_headers);
// Set desired preference file and mode (optional)
setSharedPreferencesName("my_prefs");
setSharedPreferencesMode(Context.MODE_PRIVATE);
super.onCreate(savedInstanceState);
ACRA.init(getApplication());
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setIcon(R.drawable.new);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
pref_headers.xml
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:unified="http://schemas.android.com/apk/res-auto" >
<header
unified:fragment="com.my.app.PrefsActivity$GeneralPreferenceFragment"
unified:title="@string/pref_header_general"
unified:preferenceRes="@xml/pref_general" />
pref_general.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="Category Title"
android:layout="@layout/settings_message"
<EditTextPreference
android:capitalize="words"
android:defaultValue=""
android:inputType="textCapWords"
android:key="first_name"
android:maxLines="1"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/first_name" />
settings_message.xml
这包含按钮btnTutorial我试图获取对
的引用<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvSettingsMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:text="@string/settings_text" />
<Button
android:id="@+id/btnTutorial"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20px"
android:text="@string/settings_button_text" />
答案 0 :(得分:0)
您在onCreate()
...
setContentView(R.layout.yourlayout);
...因此返回空值。尝试实施这些更改,然后告诉我们它是否有效。
答案 1 :(得分:0)
也许你可以从方法'onPreferenceTreeClick'访问你的imageView,如:
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
Preference preference) {
super.onPreferenceTreeClick(preferenceScreen, preference);
if (preference != null && preference.getKey().equals("imageViewKey")) {
// do something here
}
return false;
}
答案 2 :(得分:0)
以下是解决方案:
在settings_message.xml中设置按钮的属性
机器人:的onClick = “onLogoutClick”
在活动中PrefsActivity定义方法public void onLogoutClick(View v){}
你准备好了! :)
答案 3 :(得分:0)
使用:
Preference myPreference = findPreference(key);
其中key是XML中的键,例如&#34; first_name&#34;。