需要注意的事,如果在非主线程中调用 confirmPay()会报错,原因是不能进行UI操作,此时可以结合Handler来做。
public void confirmPay(){
//通过LayoutInflater类来将dialog布局的xml文件转成View
LayoutInflater inflater = LayoutInflater.from(this);
View view=inflater.inflate(R.layout.dialog,null);
Dialog dialog=new AlertDialog.Builder(DevilsAtTheGateGameActivity.this)
.setView(view)//自定义Dialog外观
.setPositiveButton(R.string.confirm_pay_yes,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
//DoSomething
}
})
.setNegativeButton(R.string.confirm_pay_no,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int whichButton) {
//DoSomething
}
}).show();
//获取Dialog布局中的文本并进行修改
TextView lineOne=(TextView)dialog.findViewById(R.id.LineOne);
TextView lineTwo=(TextView)dialog.findViewById(R.id.LineTwo);
lineOne.setText(payStr+"EP을 구매하겠습니까?");
lineTwo.setText("금액:"+payStr +"원");
}
dialog.xml文件
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="top">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/LineOne"
android:paddingTop="20dp"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="@string/confirm_pay_msgOne"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
<TextView
android:id="@+id/LineTwo"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:text="@string/confirm_pay_msgTwo"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
/>
</LinearLayout>
</LinearLayout>