Метод findViewById(int) не определен для типа Json.SnagInfo
Поэтому я установил main_layout.xml, показанный ниже, с тремя текстовыми представлениями, которые я затем "setContentView" преобразовал в main_layout.xml из MainActivity.java, как показано ниже. Затем у меня есть методы, которые будут в Java.class (отдельный класс в отдельном пакете), который не будет действием, но будет иметь методы, которые будут вызываться из MainActivity. Проблема в том, что у меня возникают проблемы с доступом к любому из этих ресурсов, каждый из трех findViewById в Java.class выделяется красным цветом и ошибочными состояниями: метод findViewById (int) не определен для типа Json.SnagInfo
Что я делаю неправильно?
main_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title" />
<TextView
android:id="@+id/author"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/author" />
<TextView
android:id="@+id/release"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/release"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
// Local Variables
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
}
}
Json.java
public class Json {
TextView title;
TextView author;
TextView release;
ListView published;
ArrayList<HashMap<String, String>> bookList = new ArrayList<HashMap<String, String>>();
public class SnagInfo extends AsyncTask<URL, Void, String> {
protected void onPreExecute() {
super.onPreExecute();
bookList.clear();
title = (TextView) findViewById(R.id.title);
author = (TextView) findViewById(R.id.author);
release = (TextView) findViewById(R.id.release);
}
}
}
1 ответ
findViewById
метод класса Activity SnagInfo расширяет AsyncTask.
Если вы хотите получить результат фоновых вычислений в классе активности, вы можете использовать интерфейс в качестве обратного вызова.
Теперь инициализируйте все ваши представления в действии и установите данные там.
Проверьте эту ссылку
Как вернуть логическое значение из AsyncTask?
Вы также можете сделать asynctask внутренним классом активности и обновить пользовательский интерфейс в onPostExecute