首先:请注意,使用您的代码时,您只会得到 0-8 的数字(而不是 9) 。
我已经为您构建了一些示例代码并对其进行了测试。这运行并执行您所描述的操作。它会在适当的时候隐藏键盘,仅在单击时才显示它EditText
。它不会分散查看数字的注意力。我希望这可以帮助你。请尝试代码。
MainActivity.java
:
package com.example.exampleshowdigits;
import java.util.Random;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.app.Activity;
import android.content.Context;
public class MainActivity extends Activity implements OnClickListener {
private Button mButton;
private TextView mTextView1;
private TextView mTextView2;
private EditText mEditText;
private boolean numbersShown;
private int[] numbers;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = (Button)findViewById(R.id.button1);
mTextView1 = (TextView)findViewById(R.id.textview1);
mTextView2 = (TextView)findViewById(R.id.textview2);
mEditText = (EditText)findViewById(R.id.edittext1);
mButton.setOnClickListener(this);
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(mEditText, 0);
numbersShown = false;
numbers = new int[9];
}
@Override
public void onClick(View v) {
if(!numbersShown) {
Random rand = new Random();
String number = "";
for(int i = 0; i < 9; i ++) {
int num = rand.nextInt(10); //assuming you want 0-9
numbers[i] = num;
number += Integer.toString(num); //same as number = number + Integer.toString(num);
}
mTextView1.setText(number);
SystemClock.sleep(500);
final Runnable makeTextDisapear = new Runnable() {
public void run() {
mTextView1.setText("");
mButton.setText(getString(R.string.checkresult));
mTextView2.setText(getString(R.string.whatdidyousee));
mEditText.setText("");
numbersShown = true;
}
};
Handler mHandler = new Handler();
mHandler.postDelayed(makeTextDisapear, 1000);
}
else {
mButton.setText(getString(R.string.shownumbers));
numbersShown = false;
int correct = 0;
String numbersEntered = mEditText.getText().toString();
for(int i = 0; i < numbersEntered.length(); i++) {
int num = Character.getNumericValue(numbersEntered.charAt(i));
if(num == numbers[i]) {
correct++;
}
}
mTextView2.setText(correct + " " + getString(R.string.correct));
}
}
}
activity_main.xml
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/shownumbers"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp" />
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:layout_below="@id/button1" />
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginTop="15dp"
android:layout_below="@id/textview1" />
<EditText
android:id="@+id/edittext1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:maxLength="9"
android:singleLine="true"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:layout_below="@id/textview2" />
</RelativeLayout>
strings.xml
:
<string name="shownumbers">Show numbers</string>
<string name="checkresult">Check result</string>
<string name="whatdidyousee">What did you see? Enter here:</string>
<string name="correct">out of 9 correct!</string>