java - 将数据存储到 Parse 中时出现问题 - 使用 TextView

标签 java android android-layout android-activity parse-platform

我在尝试运行 Activity 时收到以下意外错误:

Invalid type for value: class android.widget.TextView

本质上,我试图将数据存储到 Parse.com 中,用户可以通过单击按钮来选择他们的日历日期和时间,并且所选的日期和时间将被记录并显示到向他们显示的两个 TextView 中(日期和时间)。现在我想抓取 TextViews 信息并将其记录到解析中。

下面是 logcat 消息:

    09-16 16:58:25.510: E/AndroidRuntime(1542): FATAL EXCEPTION: main
09-16 16:58:25.510: E/AndroidRuntime(1542): Process: com.dooba.beta, PID: 1542
09-16 16:58:25.510: E/AndroidRuntime(1542): java.lang.IllegalArgumentException: invalid type for value: class android.widget.TextView
09-16 16:58:25.510: E/AndroidRuntime(1542):     at com.parse.ParseObject.put(ParseObject.java:2696)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at com.parse.ParseUser.put(ParseUser.java:404)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at com.dooba.beta.ScheduleMatchOptionActivity$1.onClick(ScheduleMatchOptionActivity.java:55)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.view.View.performClick(View.java:4438)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.view.View$PerformClick.run(View.java:18422)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.os.Handler.handleCallback(Handler.java:733)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.os.Handler.dispatchMessage(Handler.java:95)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.os.Looper.loop(Looper.java:136)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at android.app.ActivityThread.main(ActivityThread.java:5017)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at java.lang.reflect.Method.invokeNative(Native Method)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at java.lang.reflect.Method.invoke(Method.java:515)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
09-16 16:58:25.510: E/AndroidRuntime(1542):     at dalvik.system.NativeStart.main(Native Method)

下面是 Activity 代码

public class ScheduleMatchOptionActivity extends Activity implements
OnClickListener {


protected TextView mCalendarDate;
protected TextView mCalendarTime;
Button btnCalendar, btnTimePicker;
TextView txtDate, txtTime;


private int mYear, mMonth, mDay, mHour, mMinute;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.match_schedule);
txtDate = (TextView) findViewById(R.id.txtDate);
txtTime = (TextView) findViewById(R.id.txtTime);


Button mConfirm2 = (Button)findViewById(R.id.btnConfirmSchedule);
        mConfirm2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                ParseUser currentUser = ParseUser.getCurrentUser();

             // Create the class and the columns
                currentUser.saveInBackground();

                currentUser.put("ActivityDate", txtDate); 
                currentUser.put("ActivityTime", txtTime);
                currentUser.saveInBackground(new SaveCallback() {
                    @Override
                    public void done(ParseException e) {
                        setProgressBarIndeterminateVisibility(false);

                        if (e == null) {
                            // Success!

                        }
                        else {

                        }
                 }
             });

            }
        });

btnCalendar = (Button) findViewById(R.id.btnCalendar);
btnTimePicker = (Button) findViewById(R.id.btnTimePicker);

txtDate = (TextView) findViewById(R.id.txtDate);
txtTime = (TextView) findViewById(R.id.txtTime);

btnCalendar.setOnClickListener(this);
btnTimePicker.setOnClickListener(this);
}

@Override
public void onClick(View v) {

if (v == btnCalendar) {

    // Process to get Current Date
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    // Launch Date Picker Dialog
    DatePickerDialog dpd = new DatePickerDialog(this,
            new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year,
                        int monthOfYear, int dayOfMonth) {
                    // Display Selected date in textbox
                    txtDate.setText(dayOfMonth + "-"
                            + (monthOfYear + 1) + "-" + year);

                }
            }, mYear, mMonth, mDay);
    dpd.show();
}
if (v == btnTimePicker) {

    // Process to get Current Time
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    // Launch Time Picker Dialog
    TimePickerDialog tpd = new TimePickerDialog(this,
            new TimePickerDialog.OnTimeSetListener() {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay,
                        int minute) {
                    // Display Selected time in textbox
                    txtTime.setText(hourOfDay + ":" + minute);
                }
            }, mHour, mMinute, false);
    tpd.show();
}
}


}

如果您需要任何其他信息或说明,请告诉我。

最佳答案

currentUser.put("ActivityDate", txtDate); 
currentUser.put("ActivityTime", txtTime);

以上两行需要(“key”,value)对。由于您仅传递 TextView 小部件,因此会导致异常。

用这些替换你的行

currentUser.put("ActivityDate", txtDate.getText().toString()); 
currentUser.put("ActivityTime", txtTime.getText().toString());

编辑 要验证您的 textView,请在 onclick 方法中执行此操作:

mConfirm2.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if(txtDate.getText().toString().length()>0 && txtTime.getText().toString().length() >0 ){
            ParseUser currentUser = ParseUser.getCurrentUser();

         // Create the class and the columns
            currentUser.saveInBackground();

            currentUser.put("ActivityDate", txtDate); 
            currentUser.put("ActivityTime", txtTime);
            currentUser.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    setProgressBarIndeterminateVisibility(false);

                    if (e == null) {
                        // Success!

                    }
                    else {

                    }
             }
         });
       }else{
               Toast t = t.makeText(context,"Please fill all the details !",Toast.Length_LONG);
                t.setGravity(Gravity.center,0,0);
                t.show();


        }
    });

关于java - 将数据存储到 Parse 中时出现问题 - 使用 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875191/

相关文章:

android - 如何将按钮放在回收站 View 的顶部?

java - 有没有办法在Android中绘制图形和图表?

android - 在运行时调整 map 大小

java - 在添加之前检查 Firebase 数据库中是否存在 URL

java - 使用 RxJava Observables 组合成并行下载图像的 Map

java - 动态添加的微调器为空

android - Recyclerview 项目在给它匹配父项时不会占据屏幕的所有宽度

java - 处理 JFileChooser 窗口关闭?

java - 如何检查Java中的日期是否大于另一个日期?

java - GSON 在尝试减少简单的 rest api 响应时抛出错误 : Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $