android - 如何根据另一个 Activity 的结果启用/禁用按钮?

标签 android

我目前正在开发 Android 游戏应用程序。但是我遇到了有关将 Private Void Method 中的数据从 Level1.java 传递到 LevelPage.java 中的数据的问题。下面是 Level1.java 的代码,非常非常长的代码,将近 500 行代码。所以我将只显示允许解锁下一个级别按钮的分数的 if else 条件。

Level1.java

在AlertDialog中,如果点击Procceed按钮是肯定的按钮,会直接进入level 2。当然,即使按下Proceed按钮进入Level 2,也必须保证Level 2 Button已经存在启用。但在本例中为后退按钮的中性按钮中,当返回到 LevelPage Activity 时,它应该启用 Level 2 按钮。

if (score == 30) {

                AlertDialog.Builder builder = new AlertDialog.Builder(Level1.this);
                builder.setTitle("Level 1 Complete!");
                builder.setMessage("You have won! You have unlock level 2! You can proceed to Level 2 or go back.");
                builder.setPositiveButton("Proceed", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Level1.this, Level2.class);
                        startActivity(intent);
                    }
                });

                builder.setNeutralButton("Back", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Level1.this, LevelPage.class);
                        intent.putExtra("30", score);
                        startActivity(intent);
                    }
                });
                builder.setCancelable(false);
                builder.show();
                runTimer.cancel();
            }

请注意,gamePlay() 是一个私有(private)的 void 方法,它只是意味着它将继续游戏,因此只需忽略它即可。

LevelPage.java

btnLevel2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickSound.start();
                Intent i = getIntent();
                i.getSerializableExtra("30");
                if (i.equals("30")) {
                    Intent intent = new Intent(LevelPage.this, Level2.class);
                    startActivity(intent);
                } else {
                    btnLevel2.setEnabled(false);
                }

            }
        });

现在它实际上可以禁用按钮。但是即使它在 level1 Activity 中得分为 30,我也无法启用该按钮。我不知道能够将数据从 level1 Activity 传递到 btn2.setonclicklistener() 的 levelpage Activity 出了什么问题

最佳答案

you can do something like this:

builder.setNeutralButton("Back", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Level1.this, LevelPage.class);
                        intent.putExtra("SCORE", score);
                        startActivity(intent);
                    }
                });

//In your level activity where you have btnlvl2
// int or String based on what have you decalred your score varaible
Intent i = getIntent();
String score = i.getStringExtra("SCORE");

if (score.equals(30)){
        btnLevel2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clickSound.start();
                    Intent intent = new Intent(LevelPage.this, Level2.class);
                    startActivity(intent);

            }
        });
    }

关于android - 如何根据另一个 Activity 的结果启用/禁用按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44365243/

相关文章:

android - 将文本保留在菱形背景中

Android throttle 按钮单击

Android - 中风在圆角矩形的角落看起来像素化

android - 哪种嵌套布局顺序在 Android 中最有效

java - Android 中的 slider 开关

java - 将值从 onResponse 传递到 onPostExecute 不断变为 null

android - HDPI和MDPI问题

java - android opengl 游戏

Android : EditText. getText() 在 Android 1.6 上返回 ""(空)字符串

android - 用android中的动画幻灯片替换activitygroup中的 View