Null ImageView Справочник - PullRequest
       0

Null ImageView Справочник

2 голосов
/ 25 мая 2011

Я пытаюсь получить ссылку на объект ImageView и по какой-либо причине он снова возвращается как ноль.

XML:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:padding="6dip">
  <ImageView android:id="@+id/application_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" />
  <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/label" android:text="Application Name" />
  <CheckBox android:id="@+id/check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" />
</LinearLayout>

Java:

ImageView img = (ImageView) v.findViewById(R.id.application_icon);

Я не чувствую, что делаю что-то не так, но мой img var всегда возвращается как ноль.Что не так с этой картинкой?

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Сат ответ правильный, т. Е. Вам нужен правильный макет, но setContentView() - не единственный способ ссылки на представление . Вы можете использовать LayoutInflater для надувания родительского макета View (даже если он не показан) и использовать этот недавно накаченный макет для ссылки на представление.

public class MyActivity extends Activity {
  Context context;
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = this;
// the rest of yout code

private void someCallback() {
  LayoutInflater inflater = (LayoutInflater) context.getSystemService
     (Context.LAYOUT_INFLATER_SERVICE);
  LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.iconLayout, null);
  ImageView img = (ImageView) ll.findViewById(R.id.application_icon);
// you can do whatever you need with the img (get the Bitmap, maybe?)

Единственное изменение, которое вам необходимо внести в ваш xml-файл, это добавить идентификатор в родительский макет, чтобы вы могли использовать его с LayoutInflater:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="iconLayout"
<!-- all the rest of your layout -->
  <ImageView android:id="@+id/application_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<!-- all the rest of your layout -->
</LinearLayout>
1 голос
/ 25 мая 2011

Когда вы ссылаетесь на imageView, убедитесь, что вы используете правильный макет, то есть setContentView (R.layout.yourIntendedXmlLayout);

Этот xml должен содержать ваш imageView. Тогда вы можете обратиться к вашему imageView.

0 голосов
/ 25 мая 2011

использование

ImageView img = (ImageView)findViewById(R.id.application_icon);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...