我有一个从MapActivity扩展的活动MyActivity。在包含布局的.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。 如何获得我要查找的视图?
非常感谢!
答案 0 :(得分:71)
感谢您发表评论,我明白您的意思,但我不想查看旧值。我只想得到一个指向该视图的指针。
查看其他人的代码我刚刚找到了解决方法,您可以使用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
上下文的inflater,通过inflate方法访问根视图,最后在布局的根视图上调用findViewById
。
希望这对某人有用!再见
答案 1 :(得分:5)
我改变了我的活动但受影响了。 这是我的代码:
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) {
}
}
答案 2 :(得分:4)
尝试:
Activity parentActivity = this.getParent();
if (parentActivity != null)
{
View landmarkEditNameView = (EditText) parentActivity.findViewById(R.id. landmark_name_dialog_edit);
}
答案 3 :(得分:2)
另一种方法是:
// inflate the layout
View myLayout = LayoutInflater.from(this).inflate(R.layout.MY_LAYOUT,null);
// load the text view
TextView myView = (TextView) myLayout.findViewById(R.id.MY_VIEW);
答案 4 :(得分:0)
这是不可能的。您只能查找和访问当前正在运行的视图。如果你想检查ex的值。您必须保存值的previus活动中使用的TextView是SharedPreferences,数据库,文件或通过Intent传递。
答案 5 :(得分:0)
我用过
View.inflate(getContext(), R.layout.whatever, null)
使用 View.inflate
可以防止在 null
处使用 getLayoutInflater().inflate()
的警告。