0

活動していないクラスからTextViewに値を設定するには? 不確定な時間に取得する値なので、そのクラスから値を設定することが重要です。

すべてのアドバイスが役に立ちます。ありがとうございました。

PS:

たとえば、Activity には、値を TextView に設定するメソッドがあります。

public void textViewSetText (String value){
    tv.setText(value);    
} //how correctly to transfer value from my class to get the desired effect?
4

5 に答える 5

0

アクティビティを保持していない場合は、TextViewがアクティビティで使用できるため不可能です。したがって、アクティビティへの参照がない場合は、その内容も変更できません。アクティビティ参照を静的メソッドに渡す場合、そのメソッドが変更を行う可能性があります。

于 2012-04-18T14:43:15.167 に答える
0
  1. UIスレッドの外部からAndroidUIツールキットにアクセスしないでください
  2. AsyncTaskユーザーインターフェイスで非同期作業を実行できます。ワーカースレッドでブロック操作を実行し、スレッドやハンドラーを自分で処理しなくても、UIスレッドで結果を公開します。

次に例を示します。

    public void onClick(View v) {
        new SomeTask().execute(something);
    }
    private class SomeTask extends AsyncTask<Something, Void, String> {
        /** The system calls this to perform work in a worker thread and
          * delivers it the parameters given to AsyncTask.execute() */
        protected Bitmap doInBackground(Something something) {
            return string; // the TextView's text
        }

        /** The system calls this to perform work in the UI thread and delivers
          * the result from doInBackground() */
        protected void onPostExecute(String result) {
            textView.setText(result);
        }
    }

ただし、ケースをより詳細に説明しないと、正確な答えが得られない可能性があります。

于 2012-04-18T15:00:36.897 に答える
0

通常、TextView のコンテンツはアクティビティ内でのみ設定する必要があります。アクティビティの外でその値を設定することはできますが、あまり役に立ちません。

ご質問の件ですが、不確定なタイミングで値を取得しましたが、いくつか選択肢があります。例えば、そのクラスへのコールバックを登録し、他のクラスがその値を取得したときに、そのコールバックを介してメッセージを送信することができます。ただし、スレッドの問題に注意してください。値を TextView に設定することは UI 操作であり、UI スレッドでのみ実行する必要があります。

于 2012-04-18T14:48:22.287 に答える
0

外部静的クラスを使用して、変更する文字列の値を保存し (TextView_Class に戻ったら値を設定する)、静的クラスにアクセスして値を取得することができます。

"this" (アクティビティ) を静的クラスに保存して、どこからでもそのアクティビティにアクセスできるため、TextView を変更できます。(私はこれが推奨されるとは思わない)。

場合によっては (十分に説明しませんでした)、通常行うべきことは、親子クラスの場合は String をバンドルすることです。

于 2012-04-18T15:46:51.193 に答える