如何使用 Java 在 Android Studio 中从内部 class enable/disable 外部 class 的按钮视图?

How to enable/disable a Button view of outer class from inner class in Android Studio with Java?

我试过的代码:

public class MainActivity extends AppCompatActivity {

    static Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
    }

    private class xyz{

        MainActivity.button.setEnabled(false);
    }
}

但这里显示错误,无法解析符号 'setEnabled'。通常它应该识别setEnabled。 现在,我该如何解决这个问题? 我的XML代码也给出了,供大家参考:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="xyz"/>

</LinearLayout>

很好的问题 你有很多选择,但我会给你两个例子: 第一个为 class x

创建承包商
public class MainActivity extends AppCompatActivity {
      static Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
    }
    private class xyz{
        xyz() {
            MainActivity.button.setEnabled(false);
        }
    }
}

第二种方法是避免使用静态

public class MainActivity extends AppCompatActivity {
       Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        
    }
    private class xyz{
        Button btn;
        xyz() {
            btn = findViewById(R.id.button);
            btn.setEnabled(false);
        }
    }
}