我想要完成的是取一個數組,將它排序,拉出前5個結果並將它們顯示在一個小窗口中。建議我嘗試使用前面提到的方法來完成此操作,如下面的代碼所示。我對Android還是比較陌生,這是我第一次嘗試使用StringBuffer和AlertDialog。Android:傳遞數組到StringBuffer到AlertDialog
我的錯誤是我做了一些錯誤的初始化lastScoreMessage變量或我正確地傳遞它。我所知道的是,即使我在我的onClick開關案例中專門調用了它,它給了我一個錯誤,說它從來沒有使用過(在lastFive方法中),並且無法在onClick switch語句中解析符號lastScoreMessage,我試圖用它。
這裏的任何幫助,非常感謝。
public class EditTextButtons extends AppCompatActivity implements View.OnClickListener {
DBHandler db;
Calendar c = Calendar.getInstance ();
Date d = c.getTime ();
EditText etName;
Button btnAdd;
Button btnLastFive;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.snake_layout_r);
db = new DBHandler (this);
etName = (EditText) findViewById (R.id.etName);
btnAdd = (Button) findViewById (R.id.btnAdd);
btnLastFive = (Button) findViewById (R.id.btnLastFive);
// set listeners
btnAdd.setOnClickListener (this);
btnLastFive.setOnClickListener (this);
}
@Override
public void onClick(View v) {
switch (v.getId ()) {
case R.id.btnAdd:
insertIntoDB ();
Intent i = new Intent (getApplicationContext (), Snake.class);
startActivity (i);
break;
case R.id.btnLastFive:
lastFive();
showMessage ("Last 5 Scores", lastScoreMessage);
break;
default:
break;
}
}
protected void insertIntoDB() {
ContentValues cv = new ContentValues ();
cv.put (db.USERNAME, etName.getText ().toString ());
}
protected void lastFive() {
int listsize = 5;
List<User> userlist = new ArrayList<User> ();
userlist = db.convertDatabaseToList ();
Collections.sort (userlist, User.Comparators._id);
StringBuffer buffer = new StringBuffer();
String lastScoreMessage;
for (int i = 0; i < listsize; i++) {
User temp = userlist.get(i);
String username = temp.getName();
int score = temp.getScore();
buffer.append(username + ": " + score + "\n");
}
lastScoreMessage = buffer.toString();
}
protected void showMessage(String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
}
看起來'lastScoreMessage'不是'onClick'可以訪問的方法的變量。您需要將其聲明爲一個類變量,它只能在方法lastFive中訪問,並在此之後不做任何事情。 @Pavneet_Singh擊敗了我。 :-) – escapesequence