Передача данных из нескольких действий в одно действие - PullRequest
1 голос
/ 10 февраля 2020

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

Цель состоит в том, чтобы выбрать любой элемент из любого ListView, и он изменит текст Button на выбранный элемент, который я выбираю.

Вот код, который я использую для создания ListViews:

public class C_Camera extends AppCompatActivity {

    ListView listView_C_Camera;

    String[] listview_c_camera = new String[]{
            "a" , "b", "c", "d" , "e" , "f","g", "h","i","j"
    };

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

        listView_C_Camera = findViewById(R.id.listview_c_camera);

        ArrayAdapter<String> CanonCamera = new ArrayAdapter<>(this , R.layout.listview_row,listview_c_camera);
        listView_C_Camera.setAdapter(CanonCamera);

        listView_C_Camera.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                String C_Camera_Temp = listview_c_camera[position];

                Intent intent = new Intent(C_Camera.this, BuildCamera.class);
                intent.putExtra("C_Camera",C_Camera_Temp);
                startActivity(intent);
            }
        });
    }
}

У меня есть другое действие с Button, которое получит значения трех различных ListViews.

public class BuildCamera extends AppCompatActivity {

    Button camerabuild;

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

        camerabuild = findViewById(R.id.camerabuild);

        String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
        String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
        String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
        camerabuild.setText(C_Camera_Holder);
        camerabuild.setText(N_Camera_Holder);
        camerabuild.setText(S_Camera_Holder);
    ...

Здесь я сталкиваюсь с проблемой.

Если я использую String C_Camera_Holder = getIntent().getStringExtra("C_Camera") и комментирую остальные, это сработает и изменит текст,

String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
//   String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
//  String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
camerabuild.setText(C_Camera_Holder);
//   camerabuild.setText(N_Camera_Holder);
//   camerabuild.setText(S_Camera_Holder);

, но если Я раскомментирую второй (String N_Camera_Holder = getIntent().getStringExtra("N_Camera")), первый перестанет изменять текст, а второй сделает и так далее.

String C_Camera_Holder = getIntent().getStringExtra("C_Camera");
String N_Camera_Holder = getIntent().getStringExtra("N_Camera");
//   String S_Camera_Holder = getIntent().getStringExtra("S_Camera");
camerabuild.setText(C_Camera_Holder);
camerabuild.setText(N_Camera_Holder);
//   camerabuild.setText(S_Camera_Holder);

1 Ответ

1 голос
/ 10 февраля 2020

кнопка всегда будет содержать последнюю функцию setText (), которую вы вызвали.

    camerabuild.setText(C_Camera_Holder);
    camerabuild.setText(N_Camera_Holder);
    camerabuild.setText(S_Camera_Holder); <<----------which is, this one.

, чтобы сделать ее динамической c в целях вашей активности вы можете использовать оператор if.

как это

    if(C_Camera_Holder != null){
        camerabuild.setText(C_Camera_Holder);
    }else if(N_Camera_Holder != null){
        camerabuild.setText(N_Camera_Holder);
    }else if(S_Camera_Holder != null){
        camerabuild.setText(S_Camera_Holder);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...