0

我有一个活动,我想将对话称为:

Intent intent = new Intent(MainActivity.this, start_dialog.class);
             MainActivity.this.startActivity(intent);

我有 start_dialog 类:

public class start_dialog extends Dialog implements android.view.View.OnClickListener{

     EditText Dialog1=(EditText)findViewyId(R.id.Dialog1);
     EditText Dialog2=(EditText)findViewyId(R.id.Dialog2);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       // setContentView(R.layout.dialog_view);


        LayoutInflater li = LayoutInflater.from(getContext());
        View promptsView = li.inflate(R.layout.dialog_view, null);

        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                getContext());


        alertDialogBuilder.setView(promptsView);

            final EditText userInput1 = (EditText) promptsView
            .findViewById(R.id.Dialog1);
    final EditText userInput2 = (EditText) promptsView
            .findViewById(R.id.Dialog2
                    );
        // set dialog message
        alertDialogBuilder
            .setCancelable(false)
            .setPositiveButton("OK",
              new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {

                Dialog1.setText(userInput1.getText());
                Dialog2.setText(userInput2.getText());
                }
              })
            .setNegativeButton("Cancel",
              new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                dialog.cancel();
                }
              });


        AlertDialog alertDialog = alertDialogBuilder.create();


        alertDialog.show();

    }


}

我的问题是:

1)它给了我“必须定义一个显式的构造函数”,我不知道该放什么。

2)我不确定这是否有效。我希望对话框有 2 个编辑文本字段(和 2 个 texview),并且当用户输入填充列表视图时。

- - - - - - - - - - - - - - - - - 更新 - - - - - - - - ---------------

我的 start_dialog 是:

public  class   start_dialog extends Dialog {


    public  start_dialog(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_view);


    }


     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           // setContentView(R.layout.dialog_view);
     //public void onClick(View v) {
            LayoutInflater li = LayoutInflater.from(getContext());
            View promptsView = li.inflate(R.layout.dialog_view, null);

            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                    getContext());

            // set prompts.xml to alertdialog builder
            alertDialogBuilder.setView(promptsView);

            final EditText userInput1 = (EditText) promptsView
                    .findViewById(R.id.Dialog1);
            final EditText userInput2 = (EditText) promptsView
                    .findViewById(R.id.Dialog2);

            final EditText Dialog1 = (EditText) findViewById(R.id.Dialog1);
            final EditText Dialog2 = (EditText) findViewById(R.id.Dialog2);


            // set dialog message
            alertDialogBuilder
                .setCancelable(false)
                .setPositiveButton("OK",
                  new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                    // get user input and set it to result
                    // edit text
                    Dialog1.setText(userInput1.getText());
                    Dialog2.setText(userInput2.getText());
                    }
                  })
                .setNegativeButton("Cancel",
                  new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                    dialog.cancel();
                    }
                  });

    // create alert dialog
            AlertDialog alertDialog = alertDialogBuilder.create();

            // show it
            alertDialog.show();

    }


}

谢谢!

4

2 回答 2

3

您正在从对话框扩展您的类,并尝试实例化类似的活动,因此您会遇到错误。

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Start_dialog start_dialog = new Start_dialog(this);
        start_dialog.show();

    }

}

start_dialog.java

public class Start_dialog extends Dialog{

    public Start_dialog(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        /** 'Window.FEATURE_NO_TITLE' - Used to hide the title */
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        /** Design the dialog in main.xml file */
        setContentView(R.layout.dialog_layout); 

        Dialog1 = (EditText) findViewById(R.id.Dialog1);
        Dialog2 = (EditText) findViewById(R.id.Dialog2);

        BtnOk = (Button) findViewById(R.id.BtnOk);
        BtnCancel = (Button) findViewById(R.id.BtnCancel);

        .
        .
        .
        .


    }

    @Override
    public void onClick(View v) {
    /** When OK Button is clicked, dismiss the dialog */
    if (v == BtnOk)
        // do stuff
    }

    if (v == BtnCancel)
        dismiss();
    }   

}

清单.Xml

<activity android:name=".Start_dialog" android:label="Dialog Example"
                  android:theme="@android:style/Theme.NoTitleBar" />
于 2013-03-25T14:47:17.693 回答
0

这是我用于我的项目的简单代码:

NotificarionDialog.class :

    public class NotificationDialog extends Dialog implements android.view.View.OnClickListener
{
    String nMessage;
    TextView nMessageTv;
    Button okBtn;

    public NotificationDialog(Context context){
        super(context);
        setupView();
        setupEvent();
    }

    public NotificationDialog(Context context, String message){
        super(context);
        setMessage(message);
        setupView();
        setupEvent();
    }

    public NotificationDialog(Context context, String title, String message){
        super(context);
        this.setNotificationTitle(title);
        this.setMessage(message);
        setupView();
        setupEvent();
    }

    public void setNotificationTitle(String title){
        this.setTitle(title);
    }

    public void setMessage(String message){
        this.nMessage = message;
        nMessageTv.setText(nMessage);
    }

    private void setupView(){
        this.setContentView(R.layout.notification_dialog_layout);
        this.nMessageTv = (TextView) this.findViewById(R.id.notifDialog_text);
        this.okBtn = (Button) this.findViewById(R.id.notifDialog_ok);


    }

    private void setupEvent(){
        this.okBtn.setOnClickListener(this);
    }



    @Override
    public void onClick(View v)
    {
        // TODO Auto-generated method stub
        switch (v.getId())
        {
            case R.id.notifDialog_ok:
                this.dismiss();
                break;

            default:
                break;
        }
    }


}

以及如何从其他类中使用它:

NotificationDialog notifDialog = new NotificationDialog(this);
            notifDialog.setTitle(NotificationString.NOTIFICATION_TITLE);
            notifDialog.setMessage(NotificationString.FAIL_LOGIN);
            notifDialog.show();
于 2013-09-18T09:42:18.997 回答