【发布时间】:2015-04-28 00:57:30
【问题描述】:
我制作了一个像 4Pics1Word 这样的游戏。
现在我有 14 个按钮,我想在循环中设置按钮的可见性。
如果答案有 5 个字母,前 5 个按钮应该是可见的
例如这是我的代码:
int lengthTest = dataArr.get(currentQuestion)[0].length(); // Get Length of the word from the array.
for (int nr = 0; nr <= lengthTest; nr++) { // My Loop doesnt work
answer[nr].setVisibility(View.VISIBLE);
}
这就是我现在所拥有的,但是对于 100 张图片,每次都需要很长时间才能写出来
answer1.setVisibility(View.VISIBLE); //Button1 Visible because the answer length (lengthTest) is 5
answer2.setVisibility(View.VISIBLE); //Button2 Visible
answer3.setVisibility(View.VISIBLE); //Button3 Visible
answer4.setVisibility(View.VISIBLE); //Button4 Visible
answer5.setVisibility(View.VISIBLE); //Button5 Visible
answer6.setVisibility(View.GONE); //Button6 GONE
answer7.setVisibility(View.GONE);
answer8.setVisibility(View.GONE);
answer9.setVisibility(View.GONE);
answer10.setVisibility(View.GONE);
answer11.setVisibility(View.GONE);
希望你能理解,对不起我的英语不好
谢谢
我得到了它的工作,有一个 Button[] 如果你想要我稍后发布代码。
谢谢大家的帮助
现在我尝试了这个:
int lengthTest = dataArr.get(currentQuestion)[0].length() - 1;
for (int i=1; i<15; i++){
int buttonId = this.getResources().getIdentifier("answer"+i, "string", this.getPackageName());
Button currentGameButton = (Button)findViewById(buttonId);
//now you can do whatever you need for this button, for example
currentGameButton.setVisibility(View.VISIBLE);
// implement checkButtonVisibility to determine whether this button should be VISIBLE or GONE
}
我收到了这个错误:
02-26 16:08:41.429: E/AndroidRuntime(31838): FATAL EXCEPTION: main
02-26 16:08:41.429: E/AndroidRuntime(31838): Process: com.developer.flagsofnations, PID: 31838
02-26 16:08:41.429: E/AndroidRuntime(31838): java.lang.NullPointerException
02-26 16:08:41.429: E/AndroidRuntime(31838): at com.developer.flagsofnations.FlagsOfNations.showQuestion(FlagsOfNations.java:673)
02-26 16:08:41.429: E/AndroidRuntime(31838): at com.developer.flagsofnations.FlagsOfNations$1.onClick(FlagsOfNations.java:196)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.view.View.performClick(View.java:4480)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.view.View$PerformClick.run(View.java:18686)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.os.Handler.handleCallback(Handler.java:733)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.os.Handler.dispatchMessage(Handler.java:95)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.os.Looper.loop(Looper.java:157)
02-26 16:08:41.429: E/AndroidRuntime(31838): at android.app.ActivityThread.main(ActivityThread.java:5872)
02-26 16:08:41.429: E/AndroidRuntime(31838): at java.lang.reflect.Method.invokeNative(Native Method)
02-26 16:08:41.429: E/AndroidRuntime(31838): at java.lang.reflect.Method.invoke(Method.java:515)
02-26 16:08:41.429: E/AndroidRuntime(31838): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
02-26 16:08:41.429: E/AndroidRuntime(31838): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)
02-26 16:08:41.429: E/AndroidRuntime(31838): at dalvik.system.NativeStart.main(Native Method)
如果我使用调试器,我可以看到 buttonId = 0 和 currentGameButton = null
我认为问题出在:
第 673 行是currentGameButton.setVisibility(View.VISIBLE);
因为这是 0
【问题讨论】:
-
所有按钮都是在布局xml文件中动态创建或定义的吗?
-
您应该为此目的动态添加按钮,但您为什么不使用列表视图或网格视图呢?这些小部件非常易于使用,可以为您提供很多帮助。
-
我在 xml 中创建按钮
标签: android loops button visibility visible