문제

나는 사용자가 옵션을 선택할 수 없도록 하고 싶고 대화 상자 내에 일부 라디오 버튼을 제공하고 싶습니다.OnCreate 섹션에 이와 같은 라디오 버튼을 선언했습니다.

@Override
protected Dialog onCreateDialog(int id) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    if (id > 0)
    {
        LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final View layout = layoutInflater.inflate(R.layout.lectsort_dialog, (ViewGroup) findViewById(R.id.lect_sort));

                builder.setView(layout);

        // Now configure the AlertDialog
        builder.setTitle(R.string.exsort_title);

        radio_date = (RadioButton) findViewById(R.id.RBdate);
        radio_loctn = (RadioButton) findViewById(R.id.RBloctn);
        radio_stream = (RadioButton) findViewById(R.id.RBstream);
        radio_date.setOnClickListener(radio_listener);
        radio_loctn.setOnClickListener(radio_listener);
        radio_stream.setOnClickListener(radio_listener);

        builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
             }

radio_listener 프로시저는 다음과 같이 선언됩니다.

RadioButton.OnClickListener radio_listener =
       new RadioButton.OnClickListener()
      {
      @Override
      public void onClick(View v) {
          // Perform action on clicks
            RadioButton rb = (RadioButton) v;
            Toast.makeText(LecturesActivity.this, rb.getText(), Toast.LENGTH_SHORT).show();         
      }
};

그러나 대화 상자가 호출되면 이 줄에 Null 예외 오류가 발생합니다.

radio_date.setOnClickListener(radio_listener);

내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움이 되었습니까?

해결책

대화 상자 내에 있는 UI 요소의 ID를 얻으려면 다음과 같이 해야 합니다.

  Dialog dialog = new Dialog(mContext); // your dialog creation method here
  RadioButton radio_date = (RadioButton) dialog.findViewById(R.id.RBdate);

당신이 사용하는 경우 findViewById 그런 다음 현재 활동 보기(에서 설정했을)와 연관된 보기 개체를 캡처하려고 합니다. setContentView API)

그래서 해당 ID로 뷰를 찾으려고 합니다. RBdate 찾을 수 없는 활동 뷰에서 null을 반환합니다.

다른 팁

다음 코드를 확인하십시오 버튼 클릭으로 라디오 버튼이있는 경고

final AlertDialog.Builder  builder = new AlertDialog.Builder(this);

btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            //int states = {false, false};
            builder.setTitle("Select the item  that you want to delete from that item ");
            builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int id) {

                    // TODO Auto-generated method stub
                    if(id==0){

                    }
                    else
                    {

            });

            alert= builder.create();
            alert.show();
        }
    });
.

u 이것을 시도하고 알려주세요

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top