在活动启动android后更改空textview的值

时间:2013-03-29 23:13:15

标签: android

我是Android新手。我有一个简单的应用程序,它有两个活动,运行如下:

活动1:

public void SendMessage(View view){
    Intent intent=new Intent(this,DisplayMessage.class);
    EditText editText=(EditText) findViewById(R.id.edit_message);
    String message=editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

活动2:

“Extra_Message”将显示在单个TextView并且增加1并重复10次,每次添加结果将显示在TextView上,延迟时间为1000毫秒。

Intent intent= getIntent();
String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
int no= Integer.parseInt(message);
TextView textView=new TextView(this);
textView.setTextSize(40);
for(int i=0;i<10;i++)
{
    message=Integer.toString(no);
    textView.setText(message);
    setContentView(textView);
    no++;

    try {
        Thread.sleep(1000);
    } catch(InterruptedException e) {
    }
}

现在的问题是我不知道我应该在哪里运行这段代码。它应该在创建第二个活动后运行。

3 个答案:

答案 0 :(得分:1)

只需在第二个活动的onCreate()方法中运行它。

答案 1 :(得分:1)

在主(或UI)线程上调用Thread.sleep()是个坏主意。事实上,任何停止主线程都是一个坏主意。一种解决方案:在第二个Activity中创建一个Handler并将延迟的Runnable发布到它。使用handler.postDelayed(Runnable r, long delayMillis)在与Handler关联的线程上调度runnable(在本例中为主线程)。

private Handler handler;
private TextView textView;
private Runnable updateTextRunnable = new Runnable() {
    public void run() {
        String message = ...
        textView.setText(message);
        handler.postDelayed(this, 1000);
    }
};

public void onCreate(Bundle saved) {
    super.onCreate(saved);
    setContentView(R.layout.your_layout);

    textView = (TextView) findViewById(R.id.your_text_view_id);
    handler = new Handler();
}

public void onResume() {
    super.onResume();
    handler.postDelayed(updateTextRunnable, 1000);
}

你可以通过致电handler.removeCallbacks(updateTextRunnable);来阻止它 - 我会让你决定在哪里停止运行它。

答案 2 :(得分:0)

你可以创建一个thread类的对象,并在其中加入buckle的代码。

然后每次“for”迭代,调用

thread.sleep(500);

这样,系统将在每次迭代中等待0.5 sec