2012-05-09 41 views
3

私は彼が数回質問されたことを知っていますが、私は運がないと私が見つけたものすべてを試しています。私はまだエラーが発生しています。ここに私のコードです。EditTextから番号を取得

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:layout_gravity="center" 
android:background="@android:color/transparent" 
android:gravity="center" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Write item value." 
    android:textColor="@android:color/black" 
    android:textSize="25dp" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="202dp" 
    android:ems="10" 
    android:hint="Value" 
    android:inputType="number" > 

    <requestFocus /> 
</EditText> 

javaの

public class PopupValores extends Activity { 

    EditText valor1; 
    String myEditValue; 
    public static int valor; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.popupvalores); 

     valor1 = (EditText) findViewById (R.id.editText1); 
     myEditValue = valor1.getText().toString(); 
     valor = Integer.parseInt(myEditValue); <<<<Line 20 

    } 
} 

LogCat

05-08 21:02:10.023: W/dalvikvm(6074): threadid=1: thread exiting with uncaught exception (group=0x40020578) 
05-08 21:02:10.039: E/AndroidRuntime(6074): FATAL EXCEPTION: main 
05-08 21:02:10.039: E/AndroidRuntime(6074): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dc.maker/com.dc.maker.PopupValores}: java.lang.NumberFormatException: unable to parse '' as integer 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.os.Looper.loop(Looper.java:130) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at dalvik.system.NativeStart.main(Native Method) 
05-08 21:02:10.039: E/AndroidRuntime(6074): Caused by: java.lang.NumberFormatException: unable to parse '' as integer 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at java.lang.Integer.parseInt(Integer.java:362) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at java.lang.Integer.parseInt(Integer.java:332) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at com.popupclass.PopupValores.onCreate(PopupValores.java:20) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
05-08 21:02:10.039: E/AndroidRuntime(6074):  ... 11 more 

私はのEditTextからint型を取得し、他のクラスでそれを使用しようとしていますの値を決定する何か。誰かが私が間違っていることを教えてもらえますか?

おかげ

+1

のでlogcatトレースを投稿してください場合は、あなたがエラーを取得しています。 'valor'の値は何ですか? (ハ、それは皮肉です) – Sam

+0

笑はい、そうです、LogCatが追加されました。編集:valerは、EditTextでユーザーが書いた番号の値にする必要があります –

+0

私はEditTextに何を書いてもgettint 0です、なぜですか? –

答えて

3

例外は次のとおりです。

Java.lang.NumberFormatException: unable to parse '' as integer 

そしてeditbox1フィールドに値がないので、それだけです。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.popupvalores); 

    valor1 = (EditText) findViewById (R.id.editText1); 
    myEditValue = valor1.getText().toString(); 

    Log.debug("logtag", myEditValue); // Here you can see the output. 

    try { 
     valor = Integer.parseInt(myEditValue); 
    } 
    catch(Exception e) { 
     Log.e("logtag", "Exception: " + e.toString()); 
    } 
} 
+0

私はEditTextに何を書いても、なぜgettint 0ですか? –

+0

このコードは、アクティビティを作成するときにのみトリガされます。実行時には、EditTextには何もありません。 EditBoxで番号を使用していますか? また、myEditValueの文字列値をチェックします。おそらく、 '1'などのようなものです。その場合、Integer.parseIntは解析に問題があります。 – hallizh

1

あなたもすぐにアクセスvalor1しようとしているが、valor1は現在、空の文字列です。ユーザーが何かを定義する機会を得た後に、値を処理する必要があります。このようなボタンを追加すること

試してみてください。

(Button) button = (Button) findViewByID(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 
    public void onClick(View view) { 
     String temp = valor1.getText().toString(); 
     if(temp.isEmpty() == false) { 
      valor = Integer.parseInt(temp); 
      Log.v("SO", "Valor = " + valor); 
     } 
    } 
} 
+0

私はそのコードを待つつもりです、なぜなら私はそれをやる方法を知らないからです。 –

+0

@Sam、私が覚えているように、 'String.isEmpty()'はAndroid SDKには存在しません。 – neevek

+0

私はフィードバックに感謝しますが、ここにはいくつかのドキュメントがあります(http://developer.android.com/reference/java/lang/String.html#isEmpty%28%29) – Sam

0

あなたはonCreate()Integer.parseInt(myEditValue)をしたので、上記のコードは間違いなく、問題が発生します、あなたの活動が作成されるときに、あなたのEditTextはまだで満たされていませんテキスト(XML定義にデフォルト値を指定していないため)は空文字列で、Integer.parseInt(emptyString)NumberFormatExceptionをスローします。

これを行う正しい方法は、EditTextの値を解析するコードをどこかに移動することです。ユーザーのイベントに応じて、またはtry...catchInteger.parseInt()に単純に移動します。

最も安全な方法は常にtry...catchInteger.parseInt()です。私たちはユーザーの入力を信頼しないでください。です。

1

コードは、例外がスローされる原因となるEditText ''の空の文字列を解析しようとしています。

あなたのサンプルコードには、LinearLayoutを閉じるタグもありません。

1

使用以下の正規表現...:

public class PopupValores extends Activity { 

EditText valor1; 
String myEditValue; 
public static int valor; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.popupvalores); 

    valor1 = (EditText) findViewById (R.id.editText1); 
    myEditValue = valor1.getText().toString(); 
    valor = Integer.parseInt(myEditValue.replaceAll("[\\D]","")); 

} 

}

関連する問題