我在一個簡單的android應用程序中出現邏輯錯誤;邏輯錯誤;即使設置爲空,TextView仍會返回
我有3 Buttons
(Permute,Clear和GC),1 EditText
和TextView
。當單擊Permute按鈕時,它將EditText
框中的文本發送到另一個類的方法,並將返回的值設置爲TextView
。返回的值只是亂碼文本。
當我點擊清除,它會清除EditText
框的當前內容和TextView
; (通過將內容設置爲空字符串「」)。
然而,當我點擊置換,在文本框中新值,老(清除)文本下面
這裏的新文本一起返回的代碼:
package com.mobinga.string;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.mob.string.Perm;
public class MoPermActivity extends Activity implements View.OnClickListener {
Button btn;
Button btn2;
Button btn3;
EditText et;
TextView tv;
Vibrator vi;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.Permute);
btn2 = (Button) findViewById(R.id.Clear);
btn3 = (Button) findViewById(R.id.GC);
btn.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
et = (EditText) findViewById(R.id.Text);
tv = (TextView) findViewById(R.id.textView1);
}
public void onClick(View view){
switch(view.getId()){
case R.id.Permute:
vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vi.vibrate(50);
tv.setText(Perm.perm(et.getText().toString()));
break;
case R.id.Clear:
vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
et.setText("");
tv.setText("");
vi.vibrate(50);
break;
case R.id.GC:
vi = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
GC();
vi.vibrate(50);
}
}
public static void GC(){
Log.d("Permute","Calling GC");
System.gc();
}
}
如何正確和完全清除的TextView的內容,並從返回停止嗎?簡單地說:我的問題是即使在清除之後,TextView的被清除的內容也會返回。
編輯如果必要的話,這裏的燙髮類
package com.mob.string;
public class Perm {
static String v = "";
static void permute(int level, String permuted, boolean used[], String original) {
int length = original.length();
if (level == length) {
v +=permuted+"\n";
} else {
for (int i = 0; i < length; i++) {
if (!used[i]) {
used[i] = true;
permute(level + 1, permuted + original.charAt(i), used, original);
used[i] = false;
}
}
}
}
public String perm(String s){
boolean used[] = {false, false, false, false, false,false,false};
permute(0, "", used, s);
return v;
}
}
如果不是清除,你設置爲一個不同的任意字符串(比如MilliSeconds中的當前時間或什麼)顯示什麼? – 2012-01-15 11:03:42
點擊'Permute'後,它仍然返回帶有新內容的舊內容。 – Mob 2012-01-15 11:07:32
好的。我已將答案合併到此問題中。感謝您的修理。 – Kev 2012-01-15 15:38:07