Метод 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

Другие вопросы по тегам