1

我的应用程序主屏幕上有一个自定义“视图”小部件 (CustomController)。

在小部件的构造函数中,我可以使用以下代码访问小部件 xml 文件中的图像:

(注意,img_cursor 是“custom_controller.xml”中的 ImageView)

public final class CustomController extends LinearLayout{
    public CustomController(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view_controller = layoutInflater.inflate(R.layout.custom_controller,this);

        img_cursor = (ImageView) view_dpad.findViewById(R.id.img_cursor);
...

但是,我想访问主活动屏幕上的 TextView。自定义控制器小部件通过 main.xml 显示在主屏幕上:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/linlayRoot"
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:orientation="vertical">
        <com.test.projectname.CustomController
        android:id="@+id/dpad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginRight="15px"
        android:layout_marginLeft="15px" /> 
        <Button 
        android:text="Connect" 
        android:id="@+id/btn_connection"
        android:layout_height="wrap_content" 
        android:layout_width="100dp">
        </Button>
        <Button 
        android:text="Settings" 
        android:id="@+id/btn_settings" 
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        </Button>
        <Button 
        android:text="Debug x,y" 
        android:layout_width="wrap_content"
        android:id="@+id/btn_debug_x_y" 
        android:layout_height="wrap_content">
        </Button>
        <TextView
            android:id="@+id/txt_view_x" 
            android:layout_marginLeft="20dp"
            android:textAppearance="?android:attr/textAppearanceLarge" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="X = 0">
        </TextView>
        <TextView 
            android:id="@+id/txt_view_y"
            android:layout_marginLeft="20dp"
            android:textAppearance="?android:attr/textAppearanceLarge" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:text="Y = 0">
        </TextView>
</LinearLayout>

如何从 CustomController 类访问 main.xml 中的 TextViews?

我尝试过类似的东西:

public final class CustomController extends LinearLayout{
    public CustomController(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View main_controller = layoutInflater.inflate(R.layout.main,this);

        textview = (TextView) view_dpad.findViewById(R.id.txt_view_x);
...

我似乎无法访问主屏幕的视图。它不喜欢:

View main_controller = layoutInflater.inflate(R.layout.main,this);

谢谢你的帮助!

4

0 回答 0