3

예제로 시작합니다 ... 설정> 응용 프로그램> 응용 프로그램 관리으로 이동하면 설치된 응용 프로그램 목록과 함께 새 화면이 열립니다. 목록의 응용 프로그램을 클릭하면 열립니다 응용 프로그램에 대한 정보가 들어있는 새 화면각 화면에 대한 활동을 만들어야합니까?

글쎄, 내 응용 프로그램의 일부 설정은 목록을 통해 관리해야하며이 목록은 위의 예처럼 동작해야합니다. 이미 몇 가지 항목이있는 몇 가지 범주로 PreferenceActivity을 만들었습니다. 이러한 항목 중 하나를 클릭하면 목록에 새 데이터가있는 새 화면이 열리 며 위의 예제의 응용 프로그램. 또한이 목록의 항목을 클릭하면 일부 데이터를 설정하기 위해 새 화면이 열립니다.

어떻게해야합니까? 각 화면에 대한 활동을 만들어야합니까?

+1

일단 이것에 대한 느낌을 얻으면 파편을 봐야합니다. 예를 들어 지원 라이브러리를 통해 이전 버전의 OS에서 지원되므로 인스턴스 2.3에서 단일 활동 모델을 사용할 수 있지만 조각 모음을 활용할 수도 있습니다 3.0+ 지금 당장 혼란스러워하지 마라. 그러나 그것이 모두 젤을 시작했을 때 그것을 보아라. – Idistic

+0

는 내가 약속했던 것처럼 편집했다! – Carnal

+0

@ 카르 나 : 예를 들어 주셔서 감사합니다! – enzom83

답변

1

보기 ... 한 번 사용자가 특정 지점에서 이전 위치로 돌아가고 싶다면 ... 각각에 대해 별도의 활동을 만든 경우 ... 현재 활동이 스택에서 갑자기 나타납니다. 이전 활동을 표시하게합니다 ... 새 화면마다 목록의 내용을 변경하는 경우 ... 새 활동을 작성하는 대신 사용자가 다시 돌아 오기가 어려울 것입니다. 다시 그리고 다시 어댑터의 내용을 변경 .. 그래서 .. 각 화면에 대한 별도의 활동을 만드는 것이 좋습니다 .. (모든 활동에 대해 레이아웃 파일을 가지고 있다면 같은 [모든 사용자 정의 레이아웃을 사용할 수 있습니다 ..)

2

적어도 마법사 스타일 작업을하지 않는 경우라면 가능한 한 가장 좋은 방법입니다.

목록을 표시하려면 ListActivity을 사용하고 intents을 사용하여이 활동과주고받는 데이터를 전달하십시오.

2

직장에서 이것을 구현할 수 있었지만, 지금 구현 한 방법에 대해 머리 속에 기억하지 못합니다. 오래 전이었습니다. 아무도 좋은 답변이 없다면 내일 게시 할 것입니다. 버튼으로 작동하는 환경 설정을 저장 한 다음 클릭시 새 환경 설정 화면을 열려면 preferencesClickListener를 추가했습니다. 하지만 내가 말했듯이, 당신이 만족스러운 대답을 얻지 못하면 내일 당신을 위해 게시 할 것입니다.

행운을 빈다.

UPDATE : 그것은

?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory 
    android:title="Personal" 
    android:key="personal_category"> 
    <Preference 
     android:key="birth" 
     android:title="Birth" 
     android:summary="Choose your birthday"/> 
    <PreferenceScreen 
     android:key="height_imp" 
     android:title="Height" 
     android:summary="Enter your height"> 
     <EditTextPreference 
      android:key="foot" 
      android:title="Foot" 
      android:summary="foot" 
      android:numeric="integer" 
      android:dialogTitle="Foot"/> 
     <EditTextPreference 
      android:key="inch" 
      android:title="Inch" 
      android:summary="inch" 
      android:numeric="integer" 
      android:dialogTitle="Inch"/> 
    </PreferenceScreen> 
    <EditTextPreference 
     android:key="weight" 
     android:title="Weight" 
     android:summary="Enter your weight" 
     android:numeric="integer" 
     android:dialogTitle="Weight"/>  
</PreferenceCategory> 
</PreferenceScreen> 

입니다! 클릭하면 두 번째 PreferenceScreen으로 이동하게되고, 마지막으로 레이아웃을 사용자 정의해야 할 때 Activity를 열어야합니다. 당신은 다음 기본 설정을 사용하여 추가 할 수 onPreferenceClick : 당신이 preferenceScreen와 배경이나 다른 뭔가를 변경해야하는 경우

@Override 
public boolean onPreferenceClick(Preference preference) { 
    if(preference == birth){ 
     startActivity(new Intent(getBaseContext(), Birth.class)); 
    } 
    if(preference == height_imp){ 
     PreferenceScreen a = (PreferenceScreen) preference; 
     a.getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE)); 
     return false; 
    } 
    return true; 
} 

는 다음뿐만 아니라 preferenceClickListener를 추가 height_imp = (PreferenceScreen)getPreferenceScreen().findPreference("height_imp"); height_imp.setOnPreferenceClickListener(this); 안드로이드는이 방법으로 만들어진

3

, 문서에 따르면 "활동은 사용자가 할 수있는 단일 집중적 인 작업입니다."그렇기 때문에 각 화면마다 활동이 있어야합니다. Fragments가 도입되어 Honeycomb과 약간 변경되었지만, 태블릿 용으로 개발하지 않으면 안드로이드에서 한 페이지의 활동 마인드를 유지해야합니다.(호출 활동이 제거 할의 요청하지 않는)하고

반환 될 때까지 휴면가는 기본적으로 당신이 시작하는 활동 A의 텐트를 만들 일반적으로

+0

Android 2.3을 사용합니다. – enzom83

3

다른하여 각 활동의 호출이, 호출자가 스택으로 푸시됩니다 활동 B, startActivityForResult를 사용하여 데이터를 전달할 수 있습니다. 예 : How to pass data between activities

뒤로 단추를 누르면 이전 활동이 다시 활성화되고 설정 한 결과 핸들러에서 리턴 데이터를 얻을 수 있습니다.

더 잘 보이고 잘 작동하는 태블릿 지원을 제공하려는 경우 지원 API의 조각을 볼 수도 있습니다.