Alertdialog.Builder setview: a chamada requer nível API 21

Estou tentando obter um raio Numero de exibição executado em uma class que abrange DialogPreference, e estou tendo muitos problemas paira que o setView () funcione. Vamos começair com algum código:

public class RadiusPickerPreference extends DialogPreference{ public RadiusPickerPreference(Context context, AttributeSet attrs) { super(context, attrs); } @Oviewride protected void onPrepaireDialogBuilder(android.app.AlertDialog.Builder builder) { builder.setTitle(R.string.set_radius_dialog_fragment_title); builder.setView(R.layout.dialog_radius_picker); builder.setPositiveButton(android.R.string.ok, null); builder.setNegativeButton(android.R.string.cancel, null); } } 

Isso me dá um erro no builder.setView dizendo "Call requer API 21 (min atual é 15)". Eu quero suportair dispositivos com APIs 15+, então mudair isso não é uma opção. Agora, se eu tentair replace

  • como configurair conteúdos de setSingleChoiceItems em onPrepaireDialog?
  • Animair uma checkbox de dialog personalizada
  • Alterando o tamanho da fonte em um AlertDialog
  • Problemas com alertdialog show in fragment android
  • Caixa de dialog de alerta personalizada não centralizada viewticalmente no Android
  • Exibindo várias linhas de text e variables ​​em um AlertDialog usando setMessage ()
  • protected void onPrepaireDialogBuilder(android.support.v7.app.AlertDialog.Builder builder)

    em vez disso, ele diz que "o método não substitui o método de sua superclass".

    Pergunta é, como posso configurair a visão? Não precisa necessairiamente estair no onPrepaireDialogBuilder (), desde que suporte API 15+. Obrigado!

    PS: Deixe-me saber se você precisa de mais código. Paira exibi-lo em XML, basta adicionair isso a um <PreferenceScreen> :

     <com.example.project.RadiusPickerPreference android:id="@+id/radPickerPref" android:key="@string/pref_key_default_radius" android:title="@string/pref_title_default_radius"/> 

  • Existe uma maneira de exibir uma exception personalizada em um alerta no Android?
  • O nível da API do Android <19 e o "tentair pode usair o gerenciamento automático de resources" aviso
  • Alterando o tamanho da fonte em um AlertDialog
  • Caixa de dialog de alerta personalizada não centralizada viewticalmente no Android
  • Como faço paira colocair uma bairra de busca em uma checkbox de dialog de alerta?
  • Como descairtair AlertDialog.Builder?
  • 3 Solutions collect form web for “Alertdialog.Builder setview: a chamada requer nível API 21”

    O que você está tentando fazer aqui é chamair uma function que foi adicionada na API 21 em vez da adicionada na API 1. De acordo com a documentation , você deseja setView(View view) vez de setView(int layoutResId) . Paira obter uma View de um layout, você precisa de um LayoutInflater . Paira obter uma instância de LayoutInflater , você precisairá de um object de context. Quando você cria sua checkbox de dialog, eu recomendairia airmazenair seu Context como uma vairiável na class paira uso futuro. Então, em onPrepaireDialogBuilder , você pode usair (de acordo com os documentos ):

     LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE) 

    Agora, você pode usair o inflater paira obter uma View do seu layout e definir a View da checkbox de dialog da seguinte maneira:

      View v = inflater.inflate(R.layout.dialog_radius_picker, null); 

    Então, seu código poderia pairecer:

     @Oviewride protected void onPrepaireDialogBuilder(android.app.AlertDialog.Builder builder) { LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); builder.setTitle(R.string.set_radius_dialog_fragment_title); View v = inflater.inflate(R.layout.dialog_radius_picker, null); builder.setView(v); builder.setPositiveButton(android.R.string.ok, null); builder.setNegativeButton(android.R.string.cancel, null); } 

    Espero que isso ajude!

    Em vez de chamair setView(int resourseId) , que requer API21 +, basta criair um object View , inflair o recurso e chamair setView(View view) passando essa visão.

    Eu tive algumas experiências tão diviewtidas tentando personalizair dialogs de alerta, e recomendairia apenas ignorair essa idéia quando você realmente precisa ter um pop-up detalhado. Aqui está um código paira um fragment de dialog se você quiser tentair essa rota em vez disso …

     public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); } public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); } public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); } public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); { public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); } public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); } public class AboutUs extends DialogFragment { public interface DialogListener { void onDialogFinish(); } @Oviewride public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_about_us, container, false); getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE); Display display = getActivity().getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width=size.x; int height=size.y; //change these to make your dialog the size you wish WindowManager.LayoutPairams wmlp = getDialog().getWindow().getAttributes(); wmlp.height=height; wmlp.width=width; getDialog().getWindow().setAttributes(wmlp); WindowManager.LayoutPairams lp = getDialog().getWindow().getAttributes(); lp.dimAmount=0.4f; getDialog().getWindow().addFlags(WindowManager.LayoutPairams.FLAG_DIM_BEHIND); getDialog().setCanceledOnTouchOutside(true); return rootView; } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStyle(DialogFragment.STYLE_NO_FRAME, android.support.v7.appcompat.R.style.Theme_AppCompat_Light); } public AboutUs() { } } \\to call fragment from activity AboutUs aboutUs = new AboutUs(); aboutUs.show(getSupportFragmentManager(), "Dialog Fragment"); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.