Java循环打印每个i

时间:2018-08-15 15:24:22

标签: java android

我无法在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

显示字符串项的最佳方式应该是什么?非常感谢您的帮助

4 个答案:

答案 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();
        }
    }
}