私は単純なアンドロイドアプリで論理エラーが発生しています。論理エラー。 nullに設定してもTextViewが返る
私は3 Buttons
(Permute、ClearおよびGC)、1 EditText
およびTextView
を持っています。 Permuteボタンをクリックすると、EditText
ボックスのテキストが別のクラスのメソッドに送信され、戻り値がTextView
に設定されます。返される値はちょうど不器用なテキストです。
私はクリアをクリックすると、それはEditText
ボックスとTextView
の現在の内容をクリアします。 (内容を空文字列 ""に設定することによって)。
しかし、私はテキストボックスに新しい値で入れ替えをクリックすると、
ここ下記のより新しいテキストと一緒に古い(クリア)テキスト戻りコードは次のとおりです。
パッケージ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の内容は、クリアされても元に戻るということです。
編集必要であれば、ここで私はcalssのパーマは、使用しているが何であるかを知っているが、なぜちょうど
tv.setText(et.getText().toString());
EDITてみませんいけないパーマクラス
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などの現在の時刻など)を表示すると、何が表示されますか? –
「Permute」をクリックした後、新しいコンテンツが追加された古いコンテンツが返されます。 – Mob
Ok ..私はこの質問に答えをマージしました。修正していただきありがとうございます。 – Kev