私はアンドロイドプログラミングに非常に慣れていないので、初心者であることを許してください。レイアウトの真ん中に 1 つの TextView を持ち、数秒ごとに別のテキストに切り替える非常に単純なアクティビティを作成しようとしています。たとえば、TextView は "text1" と表示され、数秒間一時停止してから、"text2" と表示され、再び一時停止します。最終的には、さらにテキストを追加して、それらすべてを 1 つずつ循環させたいと考えています。非常に単純なことですが、現時点では主にスレッドとハンドラーについて学ぼうとしています.とにかく、エラーを防ぐためにUIスレッドから長いものを遠ざける方法について読んだので、ハンドラーを使用すると思いました.画面上の 2 つのテキストを単純に切り替えるには. 残念ながら、これを機能させることはできません. ここにいくつかのコードがあります:
public class MainActivity extends Activity {
String[] myarray = {"text1" , "text2"};
int arraylength = myarray.length;
int count;
Handler handler = new Handler();
TextView mytexts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mytexts = (TextView)findViewById(R.id.my_texts);
mytexts.setText(myarray[0]);
Thread t = new Thread( new Runnable(){
public void run() {
for (int count = 0; count < arraylength; count++){
handler.postDelayed(new Runnable(){
public void run() {
mytexts.setText(myarray[1]);
}
}, 7000);
}
}
});
t.start();
}
}
logcat で確認できることから、ハンドラーは postDelayed を次々と実行しているようです (私のコードの場合、別の postDelayed を実行するために postDelay で 7 秒待機しません)。また、「mytexts.setText(myarray[1]);」で1にしたいと思います。forループの「count」と同じであるため、配列内の文字列の1つと同じになる可能性がありますが、エラーが発生します。私はこれに何時間も悩まされてきましたが、オンラインで見つけた他の例は、他のことに取り組む前に主に基本を理解したい私のような人にとっては複雑すぎるようです. これについての助けがあれば、大歓迎です。ありがとうございました。