Android:如何在普通类中给出一个活动视图?

时间:2012-08-10 14:04:49

标签: android android-layout layout view

我有一个普通的课程(不是活动)。在该课程中,我有一个活动的参考。 现在我想访问该活动的布局xml中包含的视图(添加子项)。 我不知道该活动的布局文件的名称。我只知道我想要访问的视图的ID(例如:R.id.my_view)。

我该怎么做?

3 个答案:

答案 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);