Подтвердить что ты не робот

Android: findviewbyid: поиск вида по id, когда представление не находится на том же макете, на который ссылается setContentView

У меня есть активность MyActivity, которая распространяется от MapActivity. В XML файле, содержащем макет, я могу включить только MapView

<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/trail_map_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="key"
/>

Однако мне нужно найти другое представление, которое находится в другом XML файле. К сожалению, findViewById возвращает null. Как я могу получить представление, которое я ищу?

Спасибо большое!

4b9b3361

Ответ 1

Спасибо за комментирование, я понимаю, что вы имеете в виду, но я не хотел проверять старые значения. Я просто хотел получить указатель на это представление.

Глядя на код некоторых тел, я только что нашел обходное решение, вы можете получить доступ к корню макета с помощью LayoutInflater.

Код следующий: где this - действие:

final LayoutInflater factory = getLayoutInflater();

final View textEntryView = factory.inflate(R.layout.landmark_new_dialog, null);

landmarkEditNameView = (EditText) textEntryView.findViewById(R.id.landmark_name_dialog_edit);

В основном получить надувной элемент для контекста this, получить доступ к корневому представлению с помощью метода раздувания и, наконец, вызвать findViewById в корневом представлении макета.

Надежды полезно для кого-то! Bye

Ответ 2

Я изменил свою деятельность, но сделал. Вот мой код:

View layout = getLayoutInflater().inflate(R.layout.list_group,null);
        try {
            LinearLayout linearLayout = (LinearLayout) layout.findViewById(R.id.ldrawernav);
            linearLayout.setBackgroundColor(Color.parseColor("#ffffff"));
        }
        catch (Exception e) {

        }

    }

Ответ 3

Это невозможно. Вы можете только найти и получить доступ к просмотрам, которые в настоящее время запущены. Если вы хотите проверить значение ex. TextView, используемый в действии previus, вы должны сохранить значение SharedPreferences, базу данных, файл или передать Intent.

Ответ 4

попробовать:

Activity parentActivity = this.getParent();
if (parentActivity != null)
{
    View landmarkEditNameView = (EditText) parentActivity.findViewById(R.id. landmark_name_dialog_edit);
}