我想在执行函数的过程中动态更改视图的内容。 具体来说,我有一个记录用户音频的功能。这将被多次调用(比方说2)。我想拥有它,以便用户只按一下记录按钮,视图就会改变以引导用户完成整个过程,例如:
我已尝试使用setContentView()方法实现此功能,但视图不会更改为用户只需使用应出现在最后的视图(即第1部分成功记录,第2部分成功记录)。根据我的阅读,我明白这是因为在所有函数都完成执行之前,setContentView()不会将视图绘制到屏幕上。
必须有一种在android中动态更新视图的方法,但经过几个小时的搜索,我无法找到我正在寻找的东西。任何建议都将不胜感激。
编辑:
我已经尝试过设置文本,但它不能像上面描述的那样工作。 setText更改文本视图的内容,但它只在所有其他操作完成后才执行,所以如果我有:
Function(View view)
{
TextView tv = findViewById(R.Id.textView1);
tv.setText("Before");
record();//records two seconds of audio
tv.setText("After")
}
Function(View view)
{
TextView tv = findViewById(R.Id.textView1);
tv.setText("Before");
record();//records two seconds of audio
tv.setText("After")
}
使用上面的代码,用户不会在文本视图中看到“之前”。它们只会看到“After”,因为它只会在整个函数执行完毕后绘制到屏幕上。
编辑2: 经过几天磨削后我找到了解决方案。我在android中使用AsyncTask。我之前没有意识到这个课程因此我不知道该怎么做。对于任何有类似问题的人来说,我的解决方案是我的工作。
//In Activity
public void whenButtonPushed(View view)
{
new RecordAsyncTask(this,RecordAudio.this).execute();
TextView tv = (TextView)findViewById(R.id.TextView1);
tv.setText("Before"); // Before appears on screen to user and is later replaced with after from within the AsyncTask
}
当我调用AsyncTask时,我传递了上下文和活动的参数。这样,当它完成执行任务时,它可以根据需要更新屏幕。我根据这个Refresh Game Score TextView using AsyncTask
设计了我的AsyncTask类答案 0 :(得分:0)
由于您希望以文本方式放置文本,因此应将其应用于代码而不是XML布局文件中。
所以你必须在你的布局中创建一个TextView
,在你的代码中找到它:
TextView tv = (TextView)findViewById(R.id.your_text_view_id);
然后,在执行函数期间,相应地更改文本 这个命令:
tv.setText("desired text");