java - 如何使用 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
. 正如你在上面看到的,我已经在我想要放置代码的地方添加了一个注释部分。
解决方案
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
}
}
}
推荐阅读
- c - 将文件的每一行作为字符串存储在数组中
- sql-server-2012 - SQL“组”和“计数”类别
- encoding - 在 Jest 测试中编码的双引号
- python - 使用“scrapy”进行 Python 网络抓取:不从 span 中提取文本
- javascript - 在 GraphQL 的根部解析自定义类型
- javascript - 如何在 CSS/Javascript 中制作像素化的非直线边框?
- azure - 将智能合约从 remix 部署到 azure 区块链的问题 - 错误
- google-maps - 向上滚动时映射重叠的 AppBar
- windows - 将裸存储库从 Windows 10 git 服务器克隆到 Windows 7 客户端时出现问题:似乎不是 git 存储库
- javascript - 如何在 JSON 返回 C# 中删除列名