我有一个普通的课程(不是活动)。在该课程中,我有一个活动的参考。 现在我想访问该活动的布局xml中包含的视图(添加子项)。 我不知道该活动的布局文件的名称。我只知道我想要访问的视图的ID(例如:R.id.my_view)。
我该怎么做?
答案 0 :(得分:3)
就这么简单!
View view = activity.findViewById(R.id.my_view);
如果是布局:
LinearLayout layout = (LinearLayout) activity.findViewById(R.id.my_layoutId);
并添加视图:
layout.addView(view);
答案 1 :(得分:3)
关于NullPointerException(您应该添加到问题中),在尝试访问XML中定义的View之前,请务必确保在Activity 中调用setContentView()。用法示例:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
}
...
}
然后,某处,
ViewGroup group = (ViewGroup) context.findViewById(R.id.group); // In your example, R.id.my_view
你需要调用setContentView()的原因是在调用它之前,你的View(Group)不存在。因为找不到 ViewById()无法找到不存在的东西,所以returns null。
答案 2 :(得分:0)
您可以让您的方法接受一个Activity参数,然后使用它来按ID查找视图。
例如:
public class MyClass{
public void doSomething(Activity context){
TextView text=(TextView)context.findViewById(R.id.my_textview);
}
}
然后在你的活动中:
obj.doSomething(YourActivity.this);