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.
Как я могу получить представление, которое я ищу?
Спасибо большое!
Ответы
Ответ 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);
}