작업을 하는 도중 Activity로 되어 있는 것을 PreferenceActivity로 바꿔야만 하는 일이 생겼습니다.
아주 간단합니다. Activity를 상속 받고 있는 것을 PreferenceActivity로 바꿔주면 되니깐요.
중요한 건!!! Layout을 표현할 때 입니다.
예를 들어
----------------------------------------------------
| [ Preference 형태 ] |
| --------------------------------------------- |
| Preference list0 |
| --------------------------------------------- |
| Preference list1 |
| --------------------------------------------- |
| [ Activity 형태 ] |
| _________ |
| | 버튼 | EditText __________________ |
| _________ |
| --------------------------------------------- |
위와 같이 Prefernce list와 Activity Layout을 동시에 표현하고자 할 경우!!
어떻게 하면 될까요???
여러 번의 테스트 결과 중요한 사실을 알아냈습니다.
PreferenceActivity에서 setContentView 함수로 Layout을 잡아 줄 경우,
layout.xml에 꼭 android.R.id.listview를 넣어야만 합니다.
그렇지 않을 경우 에러 발생!!!
(현재 젤리빈에서는 android.R.id.list 임)
왜!! 꼭 넣어야만 할까요!! 그건!!
이미 지정되어 있는 androdi.R.id.listview 가 바로 Preference list로 사용되기 때문이지요.
setContentView : 전체적인 Layout을 잡는다.
addPreferencesFromResource : preference list (android.R.id.listview) 를 설정한다.
구글을 검색하면 Activity Layout과 Preference list가 함께 사용되는 내용은 많습니다.
그 내용에 제가 위에서 알려드린 부분만 알고 계시면 Layout을 Custom화 시키는 데 문제가 없겠죠.
좀더 자세한 사항이나 궁금한 사항이 있으신 분들은 댓글 달아주시면 답변 드리겠습니다.
오늘도 즐코딩!
------------------------------------------------------------------------------------
요청 사항이 있어 간단하게 소스를 만들었습니다.
layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is Button"/>
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
xml/main.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen
android:title="Preference1">
</PreferenceScreen>
<PreferenceCategory
android:title="Category">
<PreferenceScreen
android:title="Preference2">
</PreferenceScreen>
<PreferenceScreen
android:title="Preference3">
</PreferenceScreen>
<PreferenceScreen
android:title="Preference4">
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
src/MainActivity.java
package com.example.preferencetest;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addPreferencesFromResource(R.xml.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[ Android ] ListView 모드 변환 (0) | 2013.09.24 |
---|---|
[ Android ] Preference 글자 색깔 (0) | 2013.09.03 |
[Android] Dialog 중복 방지 (4) | 2013.07.12 |
[Android] GPS 위치 추적 속도 구하기! (3) | 2013.07.10 |
[Android] Looper와 Handler 관련. (0) | 2013.07.09 |