0

私はAndroidのプログラミングにかなり慣れていないので、コード内のTextViewを更新するのに問題があります。設定でき、onResume()から正しく更新されます。

後で、私は電話します

startActivityForIntent(my.android.activity,0)

次に、このメソッドでsetTextを使用します。

onActivityResult(int requestCode, int resultCode, Intent returnIntent){
    if (resultCode == Activity.RESULT_OK){
        String myString= returnIntent.getString("mystr","empty");
        myClass=myClass.interperetResults(myString);  //this method returns correctly
        leftText.setText(""+myClass.toString());
        leftText.invalidate() //neither invalidate() or postInvalidate() changes result
    }
};

TextViewクラス内で更新されているように見えますが(これをデバッグするためにSystem.outを使用しました)、画面上では更新されません。

私の知る限り、TextView.invalidate()またはTextView.postInvalidate()を呼び出す必要がありますが、どちらも効果的ではありません。私が欠けているものはありますか、それとも何ですか?私は他の投稿からのさまざまな提案の多くを試しましたが、ここでは役に立ちません。

また、rightTextオブジェクトと、返された文字列がnullの場合のifステートメントもありますが、これは問題が発生しているセクションです。私のコードの他の部分が必要な場合は、私に知らせてください。喜んでお手伝いさせていただきます。ご入力いただきありがとうございます。

編集:要求に応じて、これが私のxmlレイアウトです。問題は私が景色を見ることができないことではありませんが。onResume()でsetTextを呼び出すと、正しく表示および変更されます。とにかく、これが私のxmlコードです。変数名を一般的なものに変更したくないので、これが実際の名前です。私はプロジェクトのパートナーと協力しており、彼がxmlとレイアウトを作成したので、ここにあるすべてが何であるか完全にはわかりません。皆さんがそれを理解できることを願っています。

onCreateは次のとおりです。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

}

そしてonResume:

protected void onResume() {
    super.onResume();
    // The activity has become visible (it is now "resumed").
    setContentView(R.layout.play);

    myEquation = new Equation(getResources());
    leftText = (TextView) this.findViewById(R.id.playLeftEquation);
    rightText = (TextView) this.findViewById(R.id.playRightEquation);

    //leftText.setText("No data");
    //rightText.setText("No data");  //The textviews update fine here.  
               //Currently commented out because I thought that maybe this was 
               //overwriting the other setText, but still no change.

}



<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/atomic_bckgrd"
    android:columnCount="11" >
    <ImageButton    
        android:id="@+id/playTrashCanButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_gravity="left"
        android:layout_row="0"
        android:contentDescription="@string/trash"
        android:onClick="clickHandler"
        android:src="@drawable/trash" />

    <Button
        android:id="@+id/playEditButton"
        android:layout_column="2"
        android:layout_row="0"
        android:onClick="clickHandler"
        android:text="@string/edit" />

    <ImageButton
        android:id="@+id/playRulesButton"
        android:layout_column="4"
        android:layout_columnSpan="5"
        android:layout_row="0"
        android:contentDescription="@string/rules"
        android:onClick="clickHandler"
        android:src="@drawable/rules1" />

    <TextView            //One of the non-updating fields
        android:id="@+id/playLeftEquation"
        android:layout_column="1"
        android:layout_gravity="bottom"
        android:layout_row="1"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ImageButton
        android:id="@+id/playEnterButton"
        android:layout_column="2"
        android:layout_gravity="bottom"
        android:layout_row="1"
        android:contentDescription="@string/enter"
        android:onClick="clickHandler"
        android:src="@drawable/enter1" />

    <TextView               //The other non-updating field
        android:id="@+id/playRightEquation"
        android:layout_column="3"
        android:layout_columnSpan="6"
        android:layout_gravity="bottom"
        android:layout_row="1"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Space
        android:layout_width="52dp"
        android:layout_height="1dp"
        android:layout_column="0"
        android:layout_row="0" />

    <Space
        android:layout_width="148dp"
        android:layout_height="1dp"
        android:layout_column="1"
        android:layout_row="0" />

    <Space
        android:layout_width="161dp"
        android:layout_height="1dp"
        android:layout_column="2"
        android:layout_row="0" />

    <Space
        android:layout_width="46dp"
        android:layout_height="1dp"
        android:layout_column="3"
        android:layout_row="0" />

    <Space
        android:layout_width="36dp"
        android:layout_height="1dp"
        android:layout_column="4"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0" />

    <Space
        android:layout_width="1dp"
        android:layout_height="160dp"
        android:layout_column="0"
        android:layout_gravity="fill_horizontal"
        android:layout_row="0" />

</GridLayout>
4

1 に答える 1

1

修正済み:問題を特定しました。myEquationからtoStringメソッドを削除して、使用されているアドレスを確認した後、onResume()でmyEquationを初期化していることに気付きました。(この時点で実際にonStart()に移動していましたが、同じ効果がありました)

そうそう。onCreate()ですべての変数を初期化し、大きな頭痛の種を避けます。

于 2012-04-25T14:34:13.307 に答える