如何声明自定义alertDialog静态类?

时间:2015-07-26 05:04:46

标签: java android alertdialog

我有这种布局。

http://imgur.com/Yk0ax7G

我想创建一个显示此布局的类和一个关闭按钮。我试过这样的。

   public static class CounterDialog extends AlertDialog.Builder{

    public CounterDialog(Context context) {
        super(context);
    }
}

但是我不知道我应该在哪里声明按钮和onClickListener,那么它们去哪里了?在构造函数中?我在哪里设置setTitle,setCancelable,setButton属性呢?谢谢!

1 个答案:

答案 0 :(得分:0)

你可以在构造函数中声明按钮和onclickListener方法。这是我的代码:

#include <iostream> //removed a bunch of unused includes.
using std::cin;    // including all of namespace::std is overkill and often
using std::cout;   // leads to hard-to-solve bugs. Only use what you need
using std::endl;

int main()
{
    double scores;
    unsigned countA = 0;
    unsigned countB = 0;
    unsigned countC = 0;
    unsigned countD = 0;
    unsigned countF = 0;
    char grade;
    double sumA = 0, sumB = 0, sumC = 0, sumD = 0, sumF = 0;
    cout << "Enter scores: ";
//    for (scores; cin >> scores;){
    while (cin >> scores) // cleaner
    {
        if (scores > 85 && scores <= 100)
        {
            grade = 'A';
            countA++;
            sumA += scores;
        }
        else if (scores > 75)
        {
            grade = 'B';
            countB++;
            sumB += scores;
        }
        else if (scores > 65)
        {
            grade = 'C';
            countC++;
            sumC += scores;
        }
        else if (scores > 55)
        {
            grade = 'D';
            countD++;
            sumD += scores;
        }
        else
        {
            grade = 'F';
            countF++;
            sumF += scores;
        }
// this test is made redundant by the loop condition
//        if (!cin)
//        {
//            break;
//        }
    } // this was missing. The loop kept going and included all of
      // the following code in the loop.
    if (countA == 0)
    {
        cout << "# A's: 0 " << endl;
    }
    else
    {
        cout << "# A's: " << countA << " Average = " << sumA / countA << endl;
    }
    if (countB == 0)
    {
        cout << "# B's : 0 " << endl;
    }
    else
    {
        cout << "# B's: " << countB << " Average = " << sumB / countB << endl;
    }
    if (countC == 0)
    {
        cout << "# C's: 0 " << endl;
    }
    else
    {
        cout << "# C's: " << countC << " Average = " << sumC / countC << endl;
    }
    if (countD == 0)
    {
        cout << "# D's: 0 " << endl;
    }
    else
    {
        cout << "# D's: " << countD << " Average = " << sumD / countD << endl;
    }
    if (countF == 0)
    {
        cout << "# F's: 0 " << endl;
    }
    else
    {
        cout << "# F's: " << countF << " Average = " << sumF / countF << endl;
    }
}

这是我的xml(自定义对话框xml):

public static class CounterDialog extends AlertDialog.Builder{
    private TextView textView;

    public CounterDialog(Context context) {
        super(context);

        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.dialog, null);
        setView(view);

        setTitle("mytitile!");

        textView = (TextView)view.findViewById(R.id.textView);

        Button button = (Button)view.findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                textView.setText("click me!!!");


            }
        });
    }     

}

您可以使用以下方法创建自定义对话框:

R.layout.dialog:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:gravity="center" >
<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="hahahaahahaha"
    android:textSize="20sp"
    />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="click me!"
    android:gravity="center"
    android:layout_marginTop="10dp"
    />
 </LinearLayout>

“this”是您活动的实例。并且可以直接在构造函数中调用setTitle,setCancelable。