我有一个奇怪的问题。我正在尝试更改TextView但不能findViewById
,它表示findViewById
无法解析。我有一个主要活动,我打电话给AsyncTask(Context context)
。在构造函数中,我从main活动传递了这个,我已经尝试过使用Main Activity.getContext(),但它仍然不起作用。
欢迎任何帮助。
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 :(得分:0)
这是片段还是活动?你试过getApplicationContext()吗?
答案 1 :(得分:0)
findViewById不是Context的一个功能,它是Activity的一个功能。通常你应该直接传入视图而不是Activity,并在其上调用findViewById。
答案 2 :(得分:0)
如果你有一个活动,你应该做这样的事情,改变onPostExecute中的TextView值:
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放在单独的文件中,可以在Activity中实现的接口添加回调,或者在实例化过程中将TextView传递给AsyncTask