0

我查看了有关如何使用 xml 布局实现 alertdialog 的 android 文档

这是文档

当我运行程序并单击待办事项按钮时,程序崩溃了谁能帮忙?

这是我的源代码:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class StartMoving extends Activity implements OnClickListener {

    Button todo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_moving);

        todo = (Button) findViewById(R.id.bTodo);

        todo.setOnClickListener(this);

    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.bTodo:
            AlertDialog.Builder builder;
            AlertDialog alertDialog;

            Context mContext = getApplicationContext();
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
            View layout = inflater.inflate(R.layout.to_do_list, null);


            builder = new AlertDialog.Builder(mContext);
            builder.setView(layout);
            alertDialog = builder.create();
            alertDialog.show();
            break;

        default:
            break;
        }
    }

}

这是名为 to_do_list.xml 的 xml 文件

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

    <ScrollView
        android:id="@+id/svTips"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="87" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/tvTipsTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginBottom="10dp"
                android:text="@string/tips"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/tvtmb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/two_months_before"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvtmbSAP"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tmb_sort_and_purge"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvtmb_sap_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/tmb_sap_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvtmbR"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tmb_research"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvtmb_r_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/tmb_r_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvtmbCAMB"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/tmb_create_a_moving_builder"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvtmb_camb_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/tmb_camb_content" />

            <TextView
                android:id="@+id/tvswb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/six_weeks_before"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvswb_ordersupplies"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/swb_order_supplies"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvswb_os_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/swb_os_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvswb_use_it_or_lose_it"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/swb_use_it_or_lose_it"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvswb_uioli_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/swb_uioli_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvswb_take_measurement"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/swb_take_measurement"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvswb_tm_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/swb_tm_content" />

            <TextView
                android:id="@+id/tvomb"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/one_month_before"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_choose_your_mover_and_confirm_the_arragements"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_choose_your_mover_and_confirm_the_arragements"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_cymacta_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_cymacta_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_begin_packing"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_begin_paking"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_bp_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_bp_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_label"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_label"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_l_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_l_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_separate_values"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_separate_values"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_sv_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_sv_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_do_a_change_of_address"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_do_a_change_of_address"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_dacoa_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_dacoa_content" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <CheckBox
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />

                <TextView
                    android:id="@+id/tvomb_notify_important_parties"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/omb_notify_all_important_parties"
                    android:textStyle="bold" />
            </LinearLayout>

            <TextView
                android:id="@+id/tvomb_naip_content"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:text="@string/omb_naip_content" />
        </LinearLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="13"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/bReturntoTop"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="50"
            android:text="Go back to top" />

        <Button
            android:id="@+id/bgoto"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="50"
            android:text="Go to" />
    </LinearLayout>

</LinearLayout>

这就是 logcat 显示的内容

在此处输入图像描述

4

4 回答 4

4

利用

Context mContext = v.getApplicationContext();

代替

Context mContext = getApplicationContext();

或者

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

编辑: 你正在阅读按钮

todo = (Button) findViewById(R.id.bgoto); <-----------
                                  ^^^^^
todo.setOnClickListener(this);
于 2012-09-06T08:16:02.717 回答
0

如果您在 TabHost 中使用 alertDialog 那么您必须编写..

final AlertDialog alertDialog = new AlertDialog.Builder(**getParent()**).create();
                    //alertDialog.setTitle("Alert....");
                    alertDialog.setMessage("Your Text");
                    alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
                    {

                        public void onClick(DialogInterface arg0, int arg1) 
                        {
                            finish();
                        }

                    });
                    alertDialog.show();
于 2012-10-18T13:00:53.337 回答
0
AlertDialog.Builder diag = new AlertDialog.Builder(this);

diag.setTitle("DIALOG TITLE")

.setMessage("YOUR MESSAGE")

.setCancelable(false)

.setNegativeButton("WHAT EVER THE BUTTON TEXT",
  new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {

//enter code here

//do what ever the button in the dialog is clicked 

dialog.cancel();
                            }
                        });
        diag.show();

最简单的方法有一个警报对话框

并且不要忘记将 java 中的 Button id 更改为 R.id.goto

于 2012-10-18T12:36:53.770 回答
0

似乎我一直在从上下文中读取按钮,而不是从 alertDialog 中读取。解决方案是创建一个视图,该视图将设置为 AlertDialog 的视图,并声明一个按钮并将其设置为视图的子视图。

final View view;
LayoutInflater inf = LayoutInflater.from(StartMoving.this);
view = inf.inflate(R.layout.rename, null);
final EditText newname = (EditText) view.findViewById(R.id.etNewRoomName);
final Button todo = (BUtton) view.findViewById(R.id.bTodo);

new AlertDialog.Builder(StartMoving.this)
.setView(view)
.setTitle("Rename")
.setMessage("Enter new name for room " + currentRoom)
.show();
于 2012-10-22T07:07:07.837 回答