Android Студийная деятельность - ЗАКРЫТО - PullRequest
0 голосов
/ 03 марта 2020

Я хотел бы знать, как я могу узнать, какая кнопка была нажата в новом действии ... Чтобы объяснить мой вопрос, пожалуйста, см. Рисунки

First activity

Second activity

Я хотел бы знать, можете ли вы применить один и тот же код без необходимости создавать множество действий ... Для этого я подумал о том, чтобы взять нажатую кнопку и затем использовать систему if.

Спасибо (извините за плохой английский sh.)

1 Ответ

0 голосов
/ 03 марта 2020

Я думаю, что вы хотите добиться, чтобы при нажатии на Button он запускал новый Activity, а в SecondActivity вы могли бы различать, какой Button (из первого Actvity ) начал SecondActivity. Если это так, то будет работать следующий код:

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    public static final String BUTTON1 = "BUTTON1";
    public static final String BUTTON2 = "BUTTON2";
    public static final String BUTTON3 = "BUTTON3";
    public static final String BUTTON4 = "BUTTON4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button1 = findViewById(R.id.button1);
        Button button2 = findViewById(R.id.button2);
        Button button3 = findViewById(R.id.button3);
        Button button4 = findViewById(R.id.button4);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        Intent intent = new Intent(this, SecondActivity.class);
        switch (v.getId()) {

            case R.id.button1:
                intent.putExtra("key", BUTTON1);
                break;

            case R.id.button2:
                intent.putExtra("key", BUTTON2);
                break;

            case R.id.button3:
                intent.putExtra("key", BUTTON3);
                break;

            case R.id.button4:
                intent.putExtra("key", BUTTON4);
                break;
        }
        startActivity(intent);
    }
}

Здесь мы объявили несколько констант для каждой кнопки. Это поможет нам определить, с какой кнопки был запущен SecondActivity. Мы передадим постоянное значение с объектом намерения в SecondActivity, а затем проверим его.

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class SecondActivity extends AppCompatActivity {

    private static final String TAG = "SecondActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        String intentKey = getIntent().getStringExtra("key");

        Log.d(TAG, "Intent Key Message: " + intentKey);
    }
}

Приведенный выше код SecondActivity показывает, с какой кнопки было запущено действие.

...