2017-12-30 89 views
0

설정 메뉴로 DialogPreference을 사용하고 싶습니다 (앱 화면의 오른쪽 상단에있는 3 개의 점). 이것은 나의 현재의 접근 방식입니다 :Android - MainActivity에서 맞춤 DialogPreference를 시작하는 방법은 무엇입니까?

class SettingsActivity : DialogPreference{ 
    constructor(context : Context, attrs : AttributeSet) : super(context,attrs){ 
     isPersistent = false 
    } 
    override fun onBindDialogView(view: View?) { 
     super.onBindDialogView(view) 
     (context as Activity).fragmentManager.findFragmentById(R.xml.preferences) 
    } 
    override fun onDialogClosed(positiveResult: Boolean) { 
     super.onDialogClosed(positiveResult) 
    } 
} 

저는이 설정 메뉴를 만드는 방법에 대한 자습서를 읽었으므로 사실 지금은 꽤 혼란 스럽습니다. 내 첫 번째 방법은 사용 이는 PreferenceActivity이었다 PreferenceFragment :

class SettingsFragment : PreferenceFragment { 
    constructor() : super() 
    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     addPreferencesFromResource(R.xml.preferences) 
    } 
} 

나도 몰라 - 내가 너무 DialogPreference의 경우 이것을 사용해야합니까? 내 preferences.xml :

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <com.test.view.DialogExPreference 
     android:title="Title" 
     android:dialogMessage="Dialog Message" 
     android:negativeButtonText="test"/> 
</PreferenceScreen> 
나는이 같은 내 사용자 지정 DialogPreference를 시작하려고

:

override fun onOptionsItemSelected(item: MenuItem): Boolean { 
    return when (item.itemId) { 
     R.id.action_settings -> { 
      var i = Intent(this,SettingsActivity::class.java) 
      startActivity(i) 
      return true 
     } 
     else -> super.onOptionsItemSelected(item) 
    } 
} 

을하지만이 오류를 얻을 :

android.content.ActivityNotFoundException: Unable to find explicit activity class {com.example.standardbenutzer.integrate/com.example.standardbenutzer.integrate.SettingsActivity}; have you declared this activity in your AndroidManifest.xml? 

을하지만 내 AndroidManifest.xml에 추가하려고하면 - android:name=".SettingsActivity"에는 사용할 수있는 옵션이 없습니다. 왜 그럴까요?

+0

의 서브 클래스 실례합니다, - AppCompatActivity - ActionBarActivity가 "사용할 수있는 옵션이 없습니다"라는 의미입니까? 매니페스트를 수정하고이 정의를 포함해야합니까? – statosdotcom

+0

나는 안드로이드 스튜디오가'SettingsActivity'를 선택하는 옵션을주지 않는다는 것을 의미합니다. (아마도 실제로 활동이 없기 때문일 것입니다.) – binaryBigInt

답변

1

SettingsActivity 연장 DialogPreference입니다. DialogPreference 활동으로 인식되지 않고이 아니기 때문에 사용 또는 활동으로 매니페스트에 정의 할 수없는 경우, Activity 사용할 수 있습니다 Activity 클래스의 하위 클래스 - 무엇을 FragmentActivity 또는 Activity.class

+0

답해 주셔서 감사합니다.하지만 그 질문을 해봅시다 : 어떻게하면 'DialogPreference'를 사용합니까? '활동'이 아닌가? – binaryBigInt

+1

사용자 정의 DialogPreference를 새 클래스에만 확장하고 ur xml 기본 설정 레이아웃에서이 클래스를 사용하십시오. 이 작업을 수행하는 데 좋은 자습서입니다 [link] [http://mysoftdevs.blogspot.com.eg/2011] /12/android-how-to-create-dialogpreference.html] –

+0

이제'preference.xml'으로 무엇을 할 수 있습니까? 어떻게 사용하고 표시 할 수 있습니까? – binaryBigInt