我希望我的應用程序執行的是計算平均值並將其顯示在TextView中。從Button onClick獲取TextView的值,並通過TextWatcher將值傳遞給TextView
我有兩個按鈕(button0和button1)和六個TextViews的佈局。當我按下其中一個按鈕時,我的應用程序將獲得按下的點擊次數以及與另一個按鈕相同的次數。而且它還可以獲得按下兩個按鈕的總點擊次數。因此,如果我按點擊次數來分按鈕0,按下總點擊次數,則按下兩個按鈕,然後將其乘以100,得到按下該按鈕的百分比點擊次數。
所以這是代碼:
Button button0, button1;
int click_button0, click_button1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fragment1, container, false);
final TextView times_0_tv = (TextView) view.findViewById(R.id.times_0);
final TextView percentage_0_tv = (TextView) view.findViewById(R.id.percentage_0);
final TextView times_1_tv = (TextView) view.findViewById(R.id.times_1);
final TextView percentage_1_tv = (TextView) view.findViewById(R.id.percentage_1);
final TextView total_clicks_tv = (TextView) view.findViewById(R.id.total_clicks);
button0 = (Button) view.findViewById(R.id.button0);
button1 = (Button) view.findViewById(R.id.button1);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click_button0 = click_button0 + 1;
total_clicks = click_button0 + click_button1;
total_clicks_tv.setText(String.valueOf(total_clicks));
if (click_button0 == 1) {
Toast.makeText(getActivity(), "Number 0 has apperared 1 time", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Number 0 has apperared " + click_button0 + " times", Toast.LENGTH_SHORT).show();
}
times_0_tv.setText(String.valueOf(click_button0));
times_1_tv.setText(String.valueOf(click_button1));
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click_button1 = click_button1 + 1;
total_clicks = click_button0 + click_button1;
total_clicks_tv.setText(String.valueOf(total_clicks));
if (click_button1 == 1) {
Toast.makeText(getActivity(), "Number 1 has apperared 1 time", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Number 1 has apperared " + click_button1 + " times", Toast.LENGTH_SHORT).show();
}
times_0_tv.setText(String.valueOf(click_button0));
times_1_tv.setText(String.valueOf(click_button1));
}
});
times_0_tv.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String times0String = times_0_tv.getText().toString();
String times1String = times_1_tv.getText().toString();
String totaltimesString = total_clicks_tv.getText().toString();
// convert the String into a double
if (times0String.length() > 0) {
click_button0 = (int) Double.parseDouble(times0String);
}
if (times1String.length() > 0) {
click_button1 = (int) Double.parseDouble(times1String);
}
if (totaltimesString.length() > 0) {
total_clicks = (int) Double.parseDouble(totaltimesString);
}
// calculate re
double percent0calc = calc_percent0();
// set the label for re1Text
percentage_0_tv.setText(Double.toString(percent0calc));
}
});
times_1_tv.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String times0String = times_0_tv.getText().toString();
String times1String = times_1_tv.getText().toString();
String totaltimesString = total_clicks_tv.getText().toString();
// convert the String into a double
if (times0String.length() > 0) {
click_button0 = (int) Double.parseDouble(times0String);
}
if (times1String.length() > 0) {
click_button1 = (int) Double.parseDouble(times1String);
}
if (totaltimesString.length() > 0) {
total_clicks = (int) Double.parseDouble(totaltimesString);
}
// calculate re
double percent1calc = calc_percent1();
// set the label for re1Text
percentage_1_tv.setText(Double.toString(percent1calc));
}
});
}
double calc_percent0() {
return click_button0/total_clicks;
}
double calc_percent1() {
return click_button1/total_clicks;
}
這裏是佈局的截圖:當我按下一個按鈕,這個比例是0%
問題就來了,它不會改變。這個想法是,例如,如果我按下button0 3次,button1 1次,0的百分比是75%,1的百分比是25%。任何想法都會受到歡迎,謝謝!
編輯:我已經刪除了TextWatcher的實現,並且我已經添加了一些代碼行。當我單擊button0時它工作正常,因爲它顯示點擊百分比是100%,但是當我點擊button1時,兩個百分比都變爲0,並且我沒有得到任何百分比。將總點擊的值傳遞給calc的百分比似乎存在問題。
這是現在的代碼爲片段:
Button button0, button1;
int click_button0, click_button1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fragment1, container, false);
final TextView times_0_tv = (TextView) view.findViewById(R.id.times_0);
final TextView percentage_0_tv = (TextView) view.findViewById(R.id.percentage_0);
final TextView times_1_tv = (TextView) view.findViewById(R.id.times_1);
final TextView percentage_1_tv = (TextView) view.findViewById(R.id.percentage_1);
final TextView total_clicks_tv = (TextView) view.findViewById(R.id.total_clicks);
button0 = (Button) view.findViewById(R.id.button0);
button1 = (Button) view.findViewById(R.id.button1);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click_button0 = click_button0 + 1;
total_clicks = click_button0 + click_button1;
total_clicks_tv.setText(String.valueOf(total_clicks));
if (click_button0 == 1) {
Toast.makeText(getActivity(), "Number 0 has apperared 1 time", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Number 0 has apperared " + click_button0 + " times", Toast.LENGTH_SHORT).show();
}
times_0_tv.setText(String.valueOf(click_button0));
times_1_tv.setText(String.valueOf(click_button1));
percent0 = click_button0/total_clicks;
percentage_0_tv.setText(String.valueOf(percent0));
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
click_button1 = click_button1 + 1;
total_clicks = click_button0 + click_button1;
total_clicks_tv.setText(String.valueOf(total_clicks));
if (click_button1 == 1) {
Toast.makeText(getActivity(), "Number 1 has apperared 1 time", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), "Number 1 has apperared " + click_button1 + " times", Toast.LENGTH_SHORT).show();
}
times_0_tv.setText(String.valueOf(click_button0));
times_1_tv.setText(String.valueOf(click_button1));
percent1 = click_button1/total_clicks;
percentage_1_tv.setText(String.valueOf(percent1));
}
});
}
謝謝你的回答,這真的很有用。我已經用你的建議編輯了我的問題,但問題依然存在。希望你有任何想法,謝謝! –
我編輯了我的答案,以幫助您進行修改,希望它有所幫助。 – Dom
非常感謝你,最後我在你的幫助下得到了它! –