2016-09-27 5 views
2

이상한 문제가 있습니다. TextView를 변경하려고하지만 findViewById을 사용할 수 없다면 findViewById을 확인할 수 없다고 말합니다. 나는 AsyncTask(Context context)이라고 부르는 주요 활동을 가지고있다. 생성자에서 주 활동에서 이것을 전달했지만, 이미 주 Activity.getContext()로 시도했지만 여전히 작동하지 않습니다.Android asynctask가 컨텍스트를 허용하지 않습니다.

어떤 도움을 환영합니다.

public class UcitavanjeUpozadini extends AsyncTask<Void, Void, Void> { 

private Context context; 
private ProgressDialog progressDialog; 
private UcitavanjeHelperKlasa helperKlasa; 
private List<OglasHelper> lista; 

public UcitavanjeUpozadini(Context context){ 
    this.context = context; 
    this.progressDialog = null; 
    this.helperKlasa = new UcitavanjeHelperKlasa(); 
    this.lista = new ArrayList<OglasHelper>(); 

} 
+0

도움을주기 위해 AsyncTask에 대한 코드가 필요합니다 – ganlaw

+0

일부 코드를 표시하지만 AsyncTask에 Activity 컨텍스트를 전달하는 것은 좋지 않습니다. 쉽게 널 포인터 예외 및 메모리 누출을 초래합니다. –

+0

질문을 코드 – zomlaaa95

답변

0

당신은 활동이있는 경우, 같은 것을 할 onPostExecute에서 텍스트 뷰 값 변경해야합니다 : 별도의 파일에 AsyncTask를 넣어해야하는 경우

private MyActivity extends AppCompatActivity { 

    private TextView mTextView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_activity); 
     mTextView = (TextView) findViewById(R.id.textview); 
     new MyAsyncTask().execute(); 
    } 

    private class MyAsyncTask extends AsyncTask<Void, Void, Boolean>{ 

     @Override 
     protected void onPreExecute(){ 
      mTextView.setText("text changed before background operation"); 
     } 

     @Override 
     protected Boolean doInBackground(Void... params){ 
      //perform your background operations changing the paramaters 
      //and return type accordingly 
      return true; 
     } 

     @Override 
     protected void onPostExecute(Boolean result){ 
      mTextView.setText("text changed after background operation"); 
     } 
    } 
} 

, 당신은 인터페이스에 콜백을 추가 할 수 있습니다를 귀하의 활동에 구현 또는 인스턴스화하는 동안 AsyncTask에 TextView를 전달하십시오

+0

고맙습니다, 그게 작동합니다 – zomlaaa95

+0

@ zomlaaa95 내가 당신을 도왔습니다 :) – MatPag

0

이것은 단편이나 활동에 있습니까? getApplicationContext()를 시도 했습니까?

+0

아마도 조각이 아닙니다 ... "생성자에서 나는이 질문을 주요 활동에서 전달합니다"- 질문에서 인용. –

+0

그것은 평범한 수업을 듣고 있습니다. 시도해 봤지만 효과가 없습니다. – zomlaaa95

0

findViewById는 Activity의 기능인 Context의 기능이 아닙니다. 일반적으로 Activity가 아닌보기로 직접 전달해야하며 findViewById를 호출해야합니다.

+0

기본 활동에서보기를 어떻게 전달합니까? 나에게 몇 가지 코드를주세요 – zomlaaa95

+0

생성자의 매개 변수로 –

관련 문제