简体   繁体   English

存储内部:微调器值和文本视图为整数

[英]Storing internal: spinner value and textview to integer

Have been googling for 2 days now and I really cant solve this. 已经搜索了2天,我真的无法解决此问题。 Anyways, the method that I am using works fine with EditTexts, but not with TextViews and Spinners. 无论如何,我使用的方法在EditTexts上可以正常工作,但在TextViews和Spinners上却不能。 When pressing saver-button it crashes . 当按下保护按钮时, 它崩溃

I am a beginner so detailed explanations are appraciated! 我是初学者,因此请详细解释! Thanks! 谢谢!

The Java saving part: Java保存部分:

public void saver(View view) throws Exception

  { 
    String mag = readFields();
      saveToFile(mag);
  }

  private String readFields()
  { 
      int[] inputIDs = new int[]{
                                R.id.email_address,
                                R.id.text_date,
                                R.id.txtTime,
                                R.id.spinner1,
                                R.id.spinner2
                                };
     String outputMag = "";
     for( int id: inputIDs)
     {

         EditText textField = (EditText)findViewById(id);
         outputMag +=  textField.getText().toString() + ",";
     }
     return outputMag.substring(0, outputMag.length() -1 ) + "\n";
  }

  private void saveToFile(String message) throws Exception
  {
      String filePath = getFilesDir().toString() + "/contact.txt";
      FileOutputStream out = new FileOutputStream(filePath, true);
      out.write(message.getBytes());
      out.close();
  }

The whole XML: 整个XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AddEventActivity" >

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/txtTime"
        android:text="@string/ch_label2" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button2"
        android:layout_alignTop="@+id/text_date"
        android:text="@string/ch_label" />

    <EditText
        android:id="@+id/email_address"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/addeventname"
        android:inputType="text" />

    <TextView
        android:id="@+id/text_date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/email_address"
        android:layout_marginTop="20dp"
        android:text="text_date txt"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/txtTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/button"
        android:layout_marginTop="18dp"
        android:text="text_time txt"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:entries="@array/country_array"
        android:prompt="@string/select" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/spinner1"
        android:entries="@array/upprepa_array"
        android:prompt="@string/select2" />

    <Button
        android:id="@+id/buttontospinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/spinner2"
        android:text="@string/button_label" 
        android:onClick="saver" />

LogCat when crashes: LogCat崩溃时:

02-11 18:31:12.058: D/dalvikvm(7771): GC_CONCURRENT freed 67K, 2% free 9444K/9607K, paused 9ms+25ms
02-11 18:31:12.338: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:12.478: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:22.419: D/AndroidRuntime(7771): Shutting down VM
02-11 18:31:22.419: W/dalvikvm(7771): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
02-11 18:31:22.459: E/AndroidRuntime(7771): FATAL EXCEPTION: main
02-11 18:31:22.459: E/AndroidRuntime(7771): java.lang.IllegalStateException: Could not execute method of the activity
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.view.View$1.onClick(View.java:3044)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.view.View.performClick(View.java:3511)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.view.View$PerformClick.run(View.java:14105)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.os.Handler.handleCallback(Handler.java:605)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.os.Looper.loop(Looper.java:137)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.app.ActivityThread.main(ActivityThread.java:4424)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at java.lang.reflect.Method.invokeNative(Native Method)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at java.lang.reflect.Method.invoke(Method.java:511)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at dalvik.system.NativeStart.main(Native Method)
02-11 18:31:22.459: E/AndroidRuntime(7771): Caused by: java.lang.reflect.InvocationTargetException
02-11 18:31:22.459: E/AndroidRuntime(7771):     at java.lang.reflect.Method.invokeNative(Native Method)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at java.lang.reflect.Method.invoke(Method.java:511)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at android.view.View$1.onClick(View.java:3039)
02-11 18:31:22.459: E/AndroidRuntime(7771):     ... 11 more
02-11 18:31:22.459: E/AndroidRuntime(7771): Caused by: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
02-11 18:31:22.459: E/AndroidRuntime(7771):     at apps.rasmusmyhrberg.smartcalendar.AddEventActivity.readFields(AddEventActivity.java:67)
02-11 18:31:22.459: E/AndroidRuntime(7771):     at apps.rasmusmyhrberg.smartcalendar.AddEventActivity.saver(AddEventActivity.java:50)
02-11 18:31:22.459: E/AndroidRuntime(7771):     ... 14 more
02-11 18:31:23.099: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:23.119: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:23.669: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:23.669: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:24.159: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:24.179: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:24.719: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:24.739: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:25.290: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:25.309: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:25.859: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:25.879: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:26.489: I/dalvikvm(7771): threadid=3: reacting to signal 3
02-11 18:31:26.489: I/dalvikvm(7771): Wrote stack traces to '/data/anr/traces.txt'
02-11 18:31:26.549: I/Process(7771): Sending signal. PID: 7771 SIG: 9

You are casting every element to EditText . 您正在将每个元素都转换为EditText When one of the inputIDs does not reference an EditText , the element will be a different class. inputIDs之一未引用EditText ,元素将为不同的类。 TextView s and Spinner s are not instances of EditText and thus, cannot be cast to EditText . TextViewSpinner不是EditText实例,因此不能转换为EditText

You will need to look at each of the types you care about and call the appropriate method to retrieve the information you want. 您将需要查看您关心的每种类型,并调用适当的方法来检索所需的信息。 Then you can combine them together into an output message. 然后,您可以将它们组合在一起成为输出消息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM