0

私はAndroidプログラミングに不慣れなので、この質問がばかげていると思われる場合は、大いに許してください。私はAndroid用の電卓を開発しています。つまり、約20個のボタンとテキストフィールドがあります。ボタンが押されるたびに、テキストフィールドを更新して、ユーザーが入力内容を認識できるようにします。

ただし、テキストフィールドを更新すると、アプリケーションがクラッシュします。

updateExpressionは、いずれかのボタンが押されたときに呼び出されるメソッドです。

  public void updateExpression (View v)
    {
      Log.d("string", "updateExpression Called");
      EditText text = (EditText) findViewById(R.id.name);
      text.setText("HELLO EVERYONE");
    }

ボタンの.xmlファイルは次のとおりです。

<Button
    android:id="@+id/Button03"
    android:layout_width="70dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/name"
    android:layout_below="@+id/name"
    android:onClick="updateExpression"
    android:text="C" />
// goes on for 20 buttons with different ids and text

<TextView  
    android:id="@+id/name"
    android:layout_width="fill_parent" 
    android:text="@string/edit_message" 
    android:layout_height="33dp" 
    android:textColor="@color/opaque_red"/>
</RelativeLayout>

最後に、logcatには文字列データ「updateExpressionCalled」があります。ただし、その直後にクラッシュします。エラーには、AndroidRuntime FatalExceptionmainというタグが付いています。この後、さらに多くのエラーが発生します。関連するもの(私によると)

原因:java.lang.classCatException:android.widget.TextViewをandroid.widget.EditTextにキャストできません

親切に助けてください。

ありがとうございました。

4

2 に答える 2

2

あなたのxmlではそれはTextView あなたのコード
EditText text = (EditText) findViewById(R.id.name);
ではそれはEditText
だから1つを選択してください。これはあなたのニーズに依存します。ユーザーがこれを入力できる場合はView、を使用しますEditText。読み取り専用で、これらのテキストを処理する場合は、を選択しますTextView

于 2012-12-16T02:09:39.523 に答える
2

エラーが示すように、TextViewをEditTextにキャストしようとしています。これらは2つの別々のクラスです。

EditText text = (EditText) findViewById(R.id.name); 

する必要があります

TextView text = (TextView) findViewById(R.id.name); 
于 2012-12-16T02:10:17.697 に答える