12

画面の別の部分からTextViewのコンテンツを動的に変更するにはどうすればよいですか?

TextViewとそれに続くいくつかのタブを含むRelativeLayoutを描画するTabActivityクラスがあります。各タブ内には個別のインテントがあります。タブインテントの1つから、親TabActvityからTextViewのテキストを(.setTextを介して)変更したいと思います。

これは可能ですか?

4

4 に答える 4

27

Androidアーキテクチャコンポーネントを使用する必要があります:

データオブジェクトのLiveDataを含むViewModelを作成できます(テキストのみを変更する場合)。LiveData<String>

ライブデータオブジェクトを他の1つActivityまたはFragmentすべてのアクティビティおよびフラグメントから変更すると、このライブデータオブジェクトを監視していることが通知されます。

公式APIドキュメントには、説明付きの完全な例があります

于 2011-07-07T04:46:51.783 に答える
6

TabActivityにTextViewのテキストを設定するパブリックメソッドを作成しgetParent()、子アクティビティから呼び出し、それをTabActivityクラスにキャストしてから、そのパブリックメソッドを呼び出します。

于 2011-07-07T03:52:37.613 に答える
0

その仕事をする親タブのハンドラーを実装してみることができます。それぞれのタブからメッセージオブジェクトのテキストを渡します。安全のため、runOnUIブロック内のハンドラー内で変更を加えてください

于 2011-07-07T04:07:10.637 に答える
0

asynctaskファイルからテキストを変更する場合は、リスナーとのインターフェースを実装する必要があります。例:

AsynctaskFile:

OnReadyListener onReadyListener;

public class ABCAsynctaskFile{

   ...

   onReadyListener.onReady();

}

public interface OnReadyListener{

void onReady();

}


public void setOnReadyListener(OnReadyListener onReadyListener){

this.onReadyListener = onReadyListener;

}

ActivityFile:

public class ABC extends AppCompactActivity implements ABCAsynctaskFile.OnReadyListener{
   ..

   ABCAsynctaskFile aBCAsynctaskFileObj = new ABCAsynctaskFile(context);

   aBCAsynctaskFile.setOnReadyListener(ABC.this)

}

@Override

public void onReady(){

   // Your wished changed in edit text.

}

この構造は、nullポインタ例外を防ぐのに役立ちます。

于 2017-06-07T06:33:15.887 に答える