0

ダイアログを作成するためのこのクラスコードを持つ:

           public class DConce extends DialogFragment{

    public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder dshow = new AlertDialog.Builder(getActivity());

    LayoutInflater inflater = getActivity().getLayoutInflater();

    dshow.setView(inflater.inflate(R.layout.dialogconc, null))

           .setPositiveButton("Send", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {

                   //TODO


               }
           })
           .setNegativeButton("Close", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   DConce.this.getDialog().cancel();
               }
           });      

    return dshow.create();

    }

           public static DConce newInstance(){
           DConce arg = new DConce();
           return arg;
            }

EditText を使用してユーザー入力からデータを取得しようとしています。オブジェクトは xml で作成されます。私はそれを呼び出そうとしています

EditText dlgText = (EditText) Dconce.findViewById(R.id.txconc);

しかし、ダイアログで findViewByid が見つからないだけです。ビューはここに含まれていませんか? dshow.setView(inflater.inflate(R.layout.dialogconc, null))

何か助けてください。前もって感謝します。

PS: ダイアログは問題なく作成され、EditText が表示されます。私はそれを扱うことができません。

4

3 に答える 3

1
AlertDialog.Builder editalert = new AlertDialog.Builder(ActivityName.this);
        editalert.setTitle("My Title");
        final EditText input = new EditText(ActivityName.this);
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT);
        input.setLayoutParams(lp);
        editalert.setView(input);
        editalert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {

           String name= input.getText().toString();

            }
        });

        editalert.show();

カスタムレイアウトのダイアログを持つこともできます

あなたのdialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10" >

    <requestFocus />
</EditText>

<Button
    android:id="@+id/ok"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/editText1"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="20dp"
    android:text="OK" />

<Button
    android:id="@+id/cancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/ok"
    android:layout_alignBottom="@+id/ok"
    android:layout_marginLeft="35dp"
    android:layout_toRightOf="@+id/ok"
    android:text="CANCEL" />

   </RelativeLayout>

メイン アクティビティで

    Button b= (Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            showpopup();
        }

    });
}
public void showpopup()
{
final Dialog d = new Dialog(MainActivity.this);
d.setTitle("my title");
d.setContentView(R.layout.dialog);
// Thank you Button Listener. On Click Goes to Home Screen
 Button ok = (Button) d.findViewById(R.id.ok);
final EditText ed= (EditText) d.findViewById(R.id.editText1);
ok.setOnClickListener(new OnClickListener()
{

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        String s= ed.getText().toString();

    }

});
 Button cancel = (Button) d.findViewById(R.id.cancel);

    ok.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            d.cancel();

        }

    });
    d.show();

}
于 2013-04-04T09:30:55.653 に答える
1

ダイアログのビューを少し変更して膨張させたところ、次のように機能しました。

LayoutInflater adbInflater = LayoutInflater.from(getActivity());
        View editTextLayout = adbInflater.inflate(R.layout.dialogconc, null);
        EditText dlgText = (EditText ) editTextLayout .findViewById(R.id.txconc);

私のために働く:

public class DConce extends DialogFragment {
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder dshow = new AlertDialog.Builder(getActivity());

    LayoutInflater adbInflater = LayoutInflater.from(getActivity());
    final View editTextLayout = adbInflater.inflate(R.layout.edittext_layout, null);


    dshow.setView(editTextLayout)

           .setPositiveButton("Send", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int id) {
                   EditText dlgText = (EditText)editTextLayout.findViewById(R.id.editText1);
                   String string = dlgText.getText().toString();
                   Log.d("sadsad", string);
               }
           })
           .setNegativeButton("Close", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   DConce.this.getDialog().cancel();
               }
           });      

    return dshow.create();

    }

           public static DConce newInstance(){
               DConce arg = new DConce();
           return arg;
            }
}

活動の呼びかけ:

FragmentManager manager = getSupportFragmentManager(); 
                DialogFragment Dialog = DConce.newInstance();
                Dialog.show(manager, "tag");
于 2013-04-04T08:52:20.323 に答える
1

試してみてくださいEditText dlgText = (EditText) dshow.findViewById(R.id.txconc);

于 2013-04-04T08:57:02.157 に答える