Кнопка не работает в новой теме

Ранее у меня была ошибка - что-то про какой-то цикл, я видел информацию о том, что в этом случае необходимо создать новый поток для кнопки, но все равно ничего не происходит, журналы мыслей теперь не показывают ошибок.

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);
    }
}

1 ответ

runOnUiThread означает, что вы говорите потоку пользовательского интерфейса, чтобы выполнить переданный Runnable как инструкция, так что это не будет создавать новую тему.

Решение: я предполагаю, что этот код предназначен для демонстрации в целях создания многопоточности и обновления пользовательского интерфейса, поэтому одной из лучших альтернатив является AsyncTask

и удалить runOnUiThread функция, в этом нет необходимости


Вам нужно удалить этот код или переместить его в метод run

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

Потому что вы в настоящее время в CaptureActivity не на MainActivity, OnCreate непосредственно доставит вас к CaptureActivity где вы ожидаете код MainActivity бежать (возможно, у них одинаковый интерфейс)

Другие вопросы по тегам