Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文本转换为语音时出错:“0”;只有创建视图层次结构的原始线程才能接触其视图。”;_Java_Android - Fatal编程技术网

Java 将文本转换为语音时出错:“0”;只有创建视图层次结构的原始线程才能接触其视图。”;

Java 将文本转换为语音时出错:“0”;只有创建视图层次结构的原始线程才能接触其视图。”;,java,android,Java,Android,我得到了“只有创建视图层次结构的原始线程才能接触到它的视图”,因为我在使用“onutternancecompleted”时使用文本到语音,并在内部调用TextView 以下是我的一些代码: public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener { private TextView txtCurrentWord; public void onCreate(

我得到了“只有创建视图层次结构的原始线程才能接触到它的视图”,因为我在使用“onutternancecompleted”时使用文本到语音,并在内部调用TextView

以下是我的一些代码:

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();
    }
}