0

以前我有错误 - 关于一些循环,我已经看到在这种情况下有必要为按钮启动一个新线程的信息,但仍然没有任何反应,认为日志现在没有显示错误。

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private static final int CAPTURE = 9003;
    Button button;
    Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.capture);
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(context, "BUTTON clicked", Toast.LENGTH_LONG).show();
                        Log.d("BUTTON","CLICKED");
                    }
                });
            }
        });
        Intent intent = new Intent(this, CaptureActivity.class);
        intent.putExtra(CaptureActivity.AutoFocus, true);
        startActivityForResult(intent, CAPTURE);
    }
}
4

1 回答 1

1

runOnUiThread意味着您正在告诉 UI 线程执行传递Runnable的 as 指令,这样它就不会创建新线程。

解决方案:我假设您此代码是用于线程和 UI 更新的演示目的,因此最好的选择之一是AsyncTask

和删除runOnUiThread功能,不需要它


您需要删除此代码或将其移动到 run 方法中

Intent intent = new Intent(this, CaptureActivity.class);
intent.putExtra(CaptureActivity.AutoFocus, true);
startActivityForResult(intent, CAPTURE);

因为你目前CaptureActivity不在MainActivityOnCreate将直接将您带到CaptureActivity您期望代码MainActivity运行的位置(可能它们具有相同的 UI)

于 2017-12-12T15:47:00.617 回答