2011-01-10 2 views
1

저는 동기화 및 관리 계정에서 사용자 계정을 만드는 일종의 마법사를 만들고 있습니다. ViewFlipper를 사용하여 내 활동이 AccountAuthenticatorActivity 여야합니다. 그것은 또한 내가 PreferenceActivity를 상속받을 수 없다는 것을 의미한다.보기에 환경 설정을 표시하는 방법

그래서 PreferenceActivity 코드를 살펴본 결과 ListView에서 상속받은 PreferenceView를 가질 수 있어야한다고 생각합니다. PreferenceActivity의 활동 부분은 내가 아는 한 실제로 필요하지 않습니다.

PreferenceManager는 실제로 나를 차단합니다.

private PreferenceManager onCreatePreferenceManager() { 
    PreferenceManager preferenceManager = new PreferenceManager(this, FIRST_REQUEST_CODE); 
    preferenceManager.setOnPreferenceTreeClickListener(this); 
    return preferenceManager; 
} 

이 함수는 new 연산자를 사용하여 PreferenceManager를 생성 할 수 있음을 나타냅니다. 분명히 sdk는 PreferenceManager의 생성자를 숨 깁니다. 나는 혼란 스럽다.

환경 설정을 확장하고 환경 설정없이 환경 설정을 표시하는 방법이 있습니까?

답변

1

환경 설정을 확장하고 환경 설정없이 환경 설정을 표시 할 수있는 방법이 있습니까?

SDK를 통해, AFAIK.

이 마법사에서 환경 설정을 표시하거나 수정하지 않으므로 ("동기화 및 계정 계정에서 사용자 계정을 만드는 일종의 마법사를 만들고 있습니다"), 왜 Preference 개체를 사용하고 싶은지, 어쨌든. 그냥 일반 위젯을 사용하십시오.

+0

무엇? 나는 그들을 보여줄 수 있도록 보여주기 위해 편집 할 수 있습니다. 내 질문에 명확하지 않은 점은 무엇입니까? 마법사의 마지막 단계는 동기화 계정의 환경 설정을 설정하는 것입니다. 환경 설정이 들어있는 xml 파일이 있는데, 다른 곳에서 사용됩니다. –

+0

@Sybiam : "내 질문에 명확하지 않은 점은 무엇입니까?" - 왜 당신이 환경 설정으로 귀찮게하는지. "마법사의 마지막 단계는 동기화 계정에 대한 기본 설정입니다."- 질문에 언급되지 않았습니다. 또한 기본 설정 XML이보다 일반적인 목적의 구성이 아닌'PreferenceActivity'와 함께 사용하도록 설계된 경우에는 대답을 변경하지 않습니다. – CommonsWare

0

예, 이니시에이터는 AccountAuthenticatorActivity 일 필요가있을 수 있지만 원하는대로 모든 활동을 시작할 수 있다고 생각합니다. AccountAuthenticatorActivity은 반드시 자체 GUI를 보여줘야합니다.

이것은 우리가 수행하는 방법입니다. 선호도 활동을 시작하는 addAccount 요청을 수신합니다. 새 계정이 요청되고 적절한 GUI가 표시되는지 확인하기 위해 인 텐트가 구문 분석됩니다. 마법사가 완료되면 결과 계정은 Intent을 통해 AccountAuthenticatorActivity으로 다시 전달됩니다.

/* 
    * The user has requested to add a new account to the system. We return 
    * an intent that will launch our login screen if the user has not 
    * logged in yet, otherwise our activity will just pass the user's 
    * credentials on to the account manager. 
    */ 
    @Override 
    public Bundle addAccount(AccountAuthenticatorResponse response, 
      String accountType, String authTokenType, 
      String[] requiredFeatures, Bundle options) 
      throws NetworkErrorException { 
     Bundle result = new Bundle(); 
     Intent i = new Intent(mContext, PrefsActivity.class); 
     i.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, 
       response); 
     i.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT, 
       ServerPrefsFragment.class.getName()); 
     result.putParcelable(AccountManager.KEY_INTENT, i); 
     return result; 
    } 

편집 : 정확하게 질문에 답하지 못했습니다. 우리가 원하는 것을하기 위해 선택한 솔루션은 실제로 다음과 같이 제안됩니다. 마법사에는 PreferenceActivity를 사용하지 않고 위의 addAccount 함수에 의해 호출되는 표준 액티비티를 사용합니다.

관련 문제