我无法在Java / Android应用中显示字符串的每个项目。 这是我的代码:
int i;
Button changer;
private EditText changerlettres;
String choix;
@SuppressLint("ClickableViewAccessibility")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
changerlettres = (EditText)findViewById(R.id.changerlettres);
changer = (Button)this.findViewById(R.id.changer);
BtnClick();
}
public void BtnClick() {
changer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
choix = changerlettres.getText().toString();
for (int i = 0, n = choix.length(); i < n; i++) {
char letter = choix.charAt(i);
System.out.println(letter); //Does not display anything
Toast.makeText(MainActivity.this,choix,Toast.LENGTH_SHORT).show();// Displays correctly
Toast.makeText(MainActivity.this,letter,Toast.LENGTH_SHORT).show(); // Crash of the app
显示字符串项的最佳方式应该是什么?非常感谢您的帮助
答案 0 :(得分:2)
您的应用崩溃的原因是因为您一次不能显示多个Toast。如果要显示多个数据,则需要线程以一个接一个的方式显示,或者可以将两个字符串连接在一起并显示它们。
但是,如果您只想读取数据以进行调试,则可以使用Log.d()方法将其登录到控制台。
Log.d("MainActivity", "onClick() called with: choix = [" + choix + "]");
Log.d("MainActivity", "onClick() called with: letter = [" + letter + "]");
希望这对您有帮助。.
答案 1 :(得分:1)
查看此线程Why doesn't "System.out.println" work in Android?是否对您有帮助。
摘要-“在模拟器和大多数设备上,System.out.println重定向到LogCat并使用Log.i()打印。在非常旧的或自定义的Android版本中,可能并非如此。 ”有时没有控制台可将日志消息发送到设备中的sysout。
答案 2 :(得分:1)
修复崩溃应用(吐司)
更改此内容:
Toast.makeText(MainActivity.this,letter,Toast.LENGTH_SHORT).show();
对此:
Toast.makeText(MainActivity.this,String.valueOf(letter),Toast.LENGTH_SHORT).show();
答案 3 :(得分:0)
尝试以下代码:
Toast toast;
MyHandler myHandler;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
myHandler = new MyHandler(this);
new Thread(new Runnable() {
@Override
public void run() {
String choix = "hello world, orzangleli";
myHandler.obtainMessage(0, choix).sendToTarget();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0, n = choix.length(); i < n; i++) {
char letter = choix.charAt(i);
Log.i("tag", String.valueOf(letter)); //Does not display anything
myHandler.obtainMessage(1, String.valueOf(letter)).sendToTarget();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
class MyHandler extends Handler{
private WeakReference<Activity> activityWeakReference;
MyHandler(Activity activity) {
activityWeakReference = new WeakReference<Activity>(activity);
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0) {
String letter = (String) msg.obj;
toast.setText(letter);
toast.show();
} else if (msg.what == 1) {
String letter = (String) msg.obj;
toast.setText(letter);
toast.show();
}
}
}