首页 > 解决方案 > 如何使用 Java 从另一个活动中启用按钮?

问题描述

活动级别.xml

<Button
    android:id="@+id/level2"
    android:layout_width="100dp"
    android:layout_height="105dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_marginTop="200dp"
    android:layout_marginEnd="130dp"
    android:layout_marginRight="198dp"
    android:background="#FF0000"
    android:text="2"
    android:textSize="40sp"
    android:enabled="false" />

级别.java

public class Levels extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_levels);
    }
}

activity_level_one_result.xml

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:text="Next Level"
    android:textAllCaps="false"
    android:onClick="nextLevel"/>

LevelOneResult.java

public class LevelOneResult extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_level_one_result);
    }

    public void nextLevel(View view) {
        startActivity(new Intent(getApplicationContext(), Levels.class));
        // enable the button here
    }
}

我想从activity_levels.xml文件中启用 2 级按钮。我希望通过在LevelOneResult.java. 正如你在上面看到的,我已经在我想要放置代码的地方添加了一个注释部分。

标签: javaandroid

解决方案


interface在您的 LevelOneResult.java 中创建一个,如下所示,我在代码中的注释中解释:

public class LevelOneResult extends AppCompatActivity {

    OnCompleteListener mListener;
    //create an listener
    public  interface OnCompleteListener {
         void onComplete(boolean enableOrNot);
    }
    //attach the listener in the activity
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            this.mListener = (OnCompleteListener)activity;
        }
        catch (final ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnCompleteListener");
        }
    }

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


    }

    public void nextLevel(View view) {
        startActivity(new Intent(getApplicationContext(), Levels.class));
        // enable the button here

        here trigger the listener
        //true means enable
         mListener.onComplete(true);
    }
}

在你的Levels.java,你需要实现interface,从接口获取数据onComplete()并做你的事情

public class Levels extends AppCompatActivity implements LevelOneResult.OnCompleteListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_levels);
    }

    public void onComplete(boolean enableOrNot ) {
        // after the action in LevelOne
        // the boolean trigger here..

        //here the boolean is true,which u set in levelOneJava
        if(enableOrNot){
            //then do your stuff here
        }
    }
}

推荐阅读