2015-01-08 2 views
0

Это очень простая программа, которая вызывает асинтезную кнопку при нажатии кнопки, что изменяет текстовое представление.Android: CalledFromWrongThreadException в AsyncTask в функции onProgressUpdate

Но при нажатии кнопки он вызывает CalledFromWrongException.

public class FragmentC extends Fragment { 
public FragmentC() { 
    } 
public View contentViewC; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    contentViewC = inflater.inflate(R.layout.fragment_fragment_b, container, false); 

    Button button = (Button) contentViewC.findViewById(R.id.button1); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (MainActivity.filepath != "Nothing") { 
       Frequency getFreq=new Frequency(); 
       getFreq.execute(); 
     } 

     } 

    }); 
    return contentViewC; 
} 
private class Frequency extends AsyncTask<Void, Float, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 
      onProgressUpdate(); 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Float... values) { 
     textToChange.setText("Demo"); 
    } 
} 
+0

Также вы можете приложить исключения с постом вместе с только необходимым фрагментом кода. – Daenarys

ответ

1

Dont вызов onProgressUpdate() непосредственно

Вы просто позвоните publishProgress() из doInBackground(), то AsynchTask вызова onProgressUpdate() в потоке пользовательского интерфейса.

In Android only in main thread we update the UI 

Для более чека это onProgressUpdate() documnet

Смежные вопросы