Programing

헤더 / 조각이없는 단일 페이지 PreferenceActivity?

crosscheck 2020. 12. 1. 07:40
반응형

헤더 / 조각이없는 단일 페이지 PreferenceActivity?


나는 꽤 쉽다고 생각하는 것을 달성하려고 노력하고 있지만 PreferenceActivity 클래스와 xml preference-header 태그를 사용하여 그것을 달성하는 방법에 당황합니다.

사용자가 앱 설정 아이콘을 탭하면 작은 체크 박스 및 목록 목록이 표시되기를 바랍니다. 기본 설정 조각이 하나뿐입니다. 지금까지 기본 설정 조각에 대한 단일 헤더를 표시하도록 PreferenceActivity xml 파일 (preferences.xml 및 기본 설정 조각 xml)을 설정할 수 있습니다. 사용자가 해당 헤더를 선택하면 기본 설정 화면이 정확히 원하는대로 표시되지만 첫 번째 헤더 화면 표시를 건너 뛰는 방법을 알아낼 수 없습니다.

설정 / 기본 설정 아이콘을 탭하고 단일 헤더를 표시 한 다음 탭하여 실제 설정 / 기본 설정으로 이동하는 것은 낭비 인 것 같습니다.

나는 이것이 당신의 선호도를 분류하고 싶다면 이것이 얼마나 도움이 될 수 있는지 이해하지만, 단순한 것을 위해 이것은 오버 헤드를 추가하고 다소 투박해 보입니다.

분명했으면 좋겠어요. 요컨대 내 질문이 있습니다.

PreferenceActivity 클래스 및 preferences-header 태그를 사용하여 헤더없이 단일 옵션 화면을 표시하는 새로운 선호 방법은 무엇입니까?

좀 더 둘러 본 후에는 이전 방법이 간단한 방식으로 수행 한 작업을 수행하려는 것 같습니다. 더 이상 사용되지 않는 기능을 사용하지 않고이 작업을 수행하려고합니다.

미리 감사드립니다, B.


새로운 선호 방법은 PreferenceFragment모든 활동의 주요 콘텐츠로 싱글을 표시하는 것입니다. 필요하지 않습니다 PreferenceActivity. API 데모 샘플보기

public class FragmentPreferences extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction().replace(android.R.id.content,
                new PrefsFragment()).commit();
    }


    public static class PrefsFragment extends PreferenceFragment {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            // Load the preferences from an XML resource
            addPreferencesFromResource(R.xml.preferences);
        }
    }

}  

이 질문과 일치하는 답변을 찾고있었습니다. 결국 나는 다른 여러 출처에서 그것을 해결했습니다. 여전히 대답을 원하는 사람들을 위해 여기에 효과가 있습니다. (참고-이 프로젝트에서는 최소 및 대상 SDK가 모두 15로 설정되어 있습니다.)

  1. PreferenceHeaders를 덤프하면 필요하지 않습니다.
  2. 단일 페이지 설정으로 기본 설정 화면을 만듭니다.
  3. 기본 설정 활동 클래스를 만듭니다 (아래 SettingsActivity).
  4. PreferenceFragment를 확장하는 인라인 클래스를 만듭니다 (아래 LocationFragment).
  5. Manifest에서 클래스를 정의하십시오.
  6. 작업 시작-아래 메뉴 코드를 참조하십시오.

단일 설정 화면을 표시하는 기본 설정 클래스입니다.

public class SettingsActivity extends PreferenceActivity {

    private final static String TAG = "SettingsAcitivity";

    public SettingsActivity() {}

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MyLog.d(TAG, "onCreate");
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new LocationFragment()).commit();
    }

    public class LocationFragment extends PreferenceFragment {

        private final static String TAG = "LocationFragment";

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            MyLog.d(TAG, "onCreate");
            addPreferencesFromResource(R.xml.locationsettings);
        }
    }
}

설정을 표시하는 코드 :

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    MyLog.d(TAG, "onOptionsItemSelected");
    switch (item.getItemId()) {
    case R.id.menu_main_help:
        break;
    case R.id.menu_main_about:
        break;
    case R.id.menu_main_settings:
        MyLog.d(TAG, "Settings");
        Intent settingsIntent = new Intent(this, SettingsActivity.class);
        startActivity(settingsIntent);
        break;
    }
    return true;
}

The Back key terminates the SettingsActivity. The built in preference routines save any changes. The onResume function I have does a getSettings() that updates any changed settings used by the calling activity (MainActivity in this case).

That's it.

참고URL : https://stackoverflow.com/questions/11380051/single-page-preferenceactivity-w-no-headers-fragments

반응형