Android 膨胀第二个布局时出现问题

Android 膨胀第二个布局时出现问题,android,runtime,inflate,Android,Runtime,Inflate,我正在尝试在我的活动中设置第二个充气布局,一个是充气以设置时间选择器发出的警报,另一个是充气以设置数量选择器。到目前为止,第二个按钮不会响应,或者,根据另一组代码(显示的代码),我得到一个运行时错误。谁能告诉我我做错了什么 package org.iimed.www; import java.util.Calendar; import org.iimed.www.DateTimePicker.DateWatcher; import android.app.Activity; import

我正在尝试在我的活动中设置第二个充气布局,一个是充气以设置时间选择器发出的警报,另一个是充气以设置数量选择器。到目前为止,第二个按钮不会响应,或者,根据另一组代码(显示的代码),我得到一个运行时错误。谁能告诉我我做错了什么

package org.iimed.www;

import java.util.Calendar;

import org.iimed.www.DateTimePicker.DateWatcher;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class CaAdd extends Activity implements OnClickListener {
    Button button_click, amount;
    TextView dateResult, date2;
    int hrs, min;
    int amountt = 0;
    EditText amountedit;
    String amountText;
    Dialog amountdialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.datetimeactivity);
        dateResult = (TextView) findViewById(R.id.textview1);
        date2 = (TextView) findViewById(R.id.textView2);
        button_click = (Button) findViewById(R.id.setbtn);
        amount = (Button) findViewById(R.id.amountbtn);
        amount.setOnClickListener(this);
        button_click.setOnClickListener(this);

    }

    public void onClick(View v) {
        switch (v.getId()) {

        case R.id.setbtn:

            amountdialog = new Dialog(this);

            final Dialog mDateTimeDialog = new Dialog(this);
            // Inflate the root layout
            final RelativeLayout mDateTimeDialogView = (RelativeLayout) getLayoutInflater()
                    .inflate(R.layout.date_time_dialog, null);
            // Grab widget instance
            final DateTimePicker mDateTimePicker = (DateTimePicker) mDateTimeDialogView
                    .findViewById(R.id.DateTimePicker);

            mDateTimePicker.initData();

            Button setDateBtn = (Button) mDateTimeDialogView
                    .findViewById(R.id.SetDateTime);
            // Update demo TextViews when the "OK" button is clicked
            setDateBtn.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(CaAdd.this, AlarmReceiver.class);
                    PendingIntent pi = PendingIntent.getActivity(CaAdd.this, 2,
                            intent, PendingIntent.FLAG_CANCEL_CURRENT);
                    AlarmManager alm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

                    hrs = mDateTimePicker.getHour();
                    min = mDateTimePicker.getMinute();
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, hrs);
                    calendar.set(Calendar.MINUTE, min);
                    calendar.set(Calendar.SECOND, 0);
                    alm.set(AlarmManager.RTC_WAKEUP,
                            calendar.getTimeInMillis(), pi);

                    mDateTimePicker.clearFocus();
                    String result_string = mDateTimePicker.getMonth() + "/"
                            + String.valueOf(mDateTimePicker.getDay()) + "/"
                            + String.valueOf(mDateTimePicker.getYear()) + "  "
                            + String.valueOf(mDateTimePicker.getHour()) + ":"
                            + String.valueOf(mDateTimePicker.getMinute());

                    if (mDateTimePicker.getHour() > 12)
                        result_string = result_string + "PM";
                    else
                        result_string = result_string + "AM";
                    date2.setText(result_string);

                    mDateTimeDialog.dismiss();
                }
            });

            Button cancelBtn = (Button) mDateTimeDialogView
                    .findViewById(R.id.CancelDialog);
            // Cancel the dialog when the "Cancel" button is clicked
            cancelBtn.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    mDateTimePicker.reset();
                    mDateTimeDialog.cancel();
                }
            });

            // Reset Date and Time pickers when the "Reset" button is clicked

            Button resetBtn = (Button) mDateTimeDialogView
                    .findViewById(R.id.ResetDateTime);
            resetBtn.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    mDateTimePicker.reset();
                }
            });

            Button amountbtn = (Button) findViewById(R.id.amountbtn);
            amountbtn.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {

                    // Inflate the root layout
                    final RelativeLayout amountView = (RelativeLayout) getLayoutInflater()
                            .inflate(R.layout.amount, null);
                    // Grab widget instance

                    amountdialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

                    amountdialog.setContentView(amountView);

                    amountdialog.show();
                    amountedit = (EditText) amountView
                            .findViewById(R.id.amount);
                    ImageButton increase = (ImageButton) amountView
                            .findViewById(R.id.increase);
                    increase.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {

                            amountt++;
                            amountText = Integer.toString(amountt);
                            amountedit.setHint(amountText);
                        }
                    });

                    ImageButton decrease = (ImageButton) amountView
                            .findViewById(R.id.decrease);
                    decrease.setOnClickListener(new OnClickListener() {

                        public void onClick(View v) {
                            amountt--;
                            amountText = Integer.toString(amountt);
                            amountedit.setHint(amountText);

                        }
                    });
                    amountdialog.dismiss();
                    // No title on the dialog window
                    mDateTimeDialog
                            .requestWindowFeature(Window.FEATURE_NO_TITLE);
                    // Set the dialog content view
                    mDateTimeDialog.setContentView(mDateTimeDialogView);
                    // Display the dialog
                    mDateTimeDialog.show();

                }
            });
        }
    }
}

请编辑您的代码,使其更具可读性,并且只包含相关部分。另外,我不认为你可以在活动中夸大第二个布局。是的,这有点像弗兰肯斯坦,但我还在学习。如果有什么区别的话,布局不会在一个未命中的同时膨胀,而在另一个未命中的时候膨胀?好吧,首先,你应该重新设计这个活动。在一次单击事件处理程序中包含这么多代码是不好的。这让人很难理解。其次,您得到的错误是什么?
Thread[main](挂起(异常AndroidRuntimeException))PhoneWindow.requestFeature(int)行:286对话框.requestWindowFeature(int)行:1062 CaAdd$4.onClick(视图)行:136按钮(视图)。performClick()行:4354视图$performClick.run()行:17961
处理程序。handleCallback(消息)行:725 ViewRootImpl$ViewRootHandler(处理程序)。dispatchMessage(消息)行:92 Looper.loop()行:137 ActivityThread.main(String[])行:5328方法。Invokenactive(对象,对象[],类,类[],类,int,布尔)行:不可用[本机方法]方法。invoke(对象,对象…)行:511 ZygoteInit$MethodAndArgsCaller.run()行:1102 ZygoteInit.main(字符串[])行:869 NativeStart.main(字符串[])行:不可用[本机方法]