3

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

我怎样才能做到这一点?

4

3 回答 3

3

就如此容易!

View view = activity.findViewById(R.id.my_view);

在布局的情况下:

LinearLayout layout = (LinearLayout) activity.findViewById(R.id.my_layoutId);

并添加视图:

layout.addView(view);
于 2012-08-10T14:10:53.610 回答
3

关于 NullPointerException (您应该添加到问题中),请始终确保您在尝试访问 XML 中定义的视图之前已在 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) 不存在。因为find ViewById() 无法找到不存在的东西,所以它返回 null

于 2012-08-10T14:49:03.510 回答
0

您可以让您的方法接受一个 Activity 参数,然后使用它通过 id 查找视图。

前任:

public class MyClass{

   public void doSomething(Activity context){
      TextView text=(TextView)context.findViewById(R.id.my_textview);
   }

}

然后在您的活动中:

obj.doSomething(YourActivity.this);
于 2012-08-10T14:12:29.267 回答