在android中打开alertdialog时应用程序崩溃

时间:2012-09-06 08:14:00

标签: android android-layout

我在android文档中查看了如何使用xml布局实现alertdialog

here is the documentation

当我运行程序并单击todo按钮时程序崩溃可以帮助任何人吗?

这是我的源代码:

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显示的内容

enter image description here

4 个答案:

答案 0 :(得分:4)

使用

Context mContext = v.getApplicationContext();

而不是

Context mContext = getApplicationContext();

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

编辑: 你正在阅读按钮

todo = (Button) findViewById(R.id.bgoto); <-----------
                                  ^^^^^
todo.setOnClickListener(this);

答案 1 :(得分: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

答案 2 :(得分: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();

答案 3 :(得分:0)

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

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();