Java 将文本转换为语音时出错:“0”;只有创建视图层次结构的原始线程才能接触其视图。”;
我得到了“只有创建视图层次结构的原始线程才能接触到它的视图”,因为我在使用“onutternancecompleted”时使用文本到语音,并在内部调用TextView 以下是我的一些代码:Java 将文本转换为语音时出错:“0”;只有创建视图层次结构的原始线程才能接触其视图。”;,java,android,Java,Android,我得到了“只有创建视图层次结构的原始线程才能接触到它的视图”,因为我在使用“onutternancecompleted”时使用文本到语音,并在内部调用TextView 以下是我的一些代码: public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener { private TextView txtCurrentWord; public void onCreate(
public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener {
private TextView txtCurrentWord;
public void onCreate(Bundle savedInstanceState) {
...
this.txtCurrentWord = (TextView) findViewById(R.id.txtCurrentWord);
}
public void onUtteranceCompleted(String uttId) {
this.txtCurrentWord.setText("hello world");
}
}
有人知道如何避免这个错误吗
谢谢这里有一个可能适合您的解决方案:
private Handler viewHandler;
public void onCreate(Bundle savedInstanceState) {
...
viewHandler = new Handler();
...
...
public void onUtteranceCompleted(String uttId) {
Runnable run = new Runnable() {
public void run() {
txtCurrentWord.setText("hello world");
}
};
viewHandler.post(run);
}
因此,您可以保证您的视图被原始线程触及。可以在
试试txtCurrentWord.setText(“你好世界”);没有“this”。尝试将解决方案放入答案中,然后保留链接作为参考。请总结链接的内容;仅仅发布一个链接是没有帮助的。
package any....;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class CopyOfActivityConfigs extends Activity implements Runnable
{
Context context = this;
public static ProgressDialog progressSpinner;
public TableLayout tableLayoutAppsProtect;
public TableLayout tableLayoutAppsProtectIn;
final Handler handler = new Handler()
{
@Override
public void handleMessage( Message message)
{
String sResult = (String) message.obj;
if( (sResult != null) && (sResult != ""))
{
tableLayoutAppsProtect = (TableLayout) findViewById( R.id.tableLayoutAppsProtect);
tableLayoutAppsProtect.addView( tableLayoutAppsProtectIn);
if( progressSpinner != null) progressSpinner.dismiss();
}
return;
}
};
public void run()
{
final Message message = handler.obtainMessage( 1, fThreadAppsProtectListGenerate( context));
handler.sendMessage( message);
}
public String fThreadAppsProtectListGenerate( Context context)
{
tableLayoutAppsProtectIn = new TableLayout( context);
if( tableLayoutAppsProtectIn != null) tableLayoutAppsProtectIn.removeAllViews();
TableRow tableRow = new TableRow( context);
LinearLayout linearLayout = new LinearLayout( context);
TextView textViewSiteNow = new TextView( context);
textViewSiteNow.setText( "...");
linearLayout.addView( textViewSiteNow);
tableRow.addView( linearLayout);
tableLayoutAppsProtectIn.addView( tableRow);
if( progressSpinner != null) progressSpinner.dismiss();
return "any";
}
@Override
public void onCreate( Bundle savedInstanceState)
{
super.onCreate( savedInstanceState);
setContentView( R.layout.configappsprotect);
progressSpinner = new ProgressDialog( this);
progressSpinner.setMessage( getString( R.string.sSpinnerAppsProtectListGenerate));
progressSpinner.show();
Thread thread = new Thread( this);
thread.start();
}
}