Как отобразить ввод пользователя из динамических c созданных EditTexts в TextViews в другое действие? - PullRequest
1 голос
/ 11 июля 2020

В основном действии у меня есть кнопка, которая onClick метод создает EditText каждый раз, когда пользователь нажимает эту кнопку. Я хотел передать пользовательский ввод от каждого EditText до TextView в другое действие. Но TextView показывает ввод пользователя только с последнего EditText. Мой код может выглядеть странно, потому что я пытался решить проблему самостоятельно. Как я могу показать пользовательский ввод из каждого созданного EditText? Я новичок в программировании. Заранее благодарим.

Java код

Код EditText

int i=1;
int numberOfCreated = 2;
public void buttonCreate(View view){     // button onClick method
    for(i=1;i<numberOfCreated;i++){
        LinearLayout createdEditText1Layout=findViewById(R.id.createdEditText1Layout);
        editText1 = new EditText(this);
        LinearLayout.LayoutParams paramsForEditText1 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        editText1.setLayoutParams(paramsForEditText1);
        editText1.setInputType(InputType.TYPE_CLASS_TEXT);
        editText1.setHint(R.string.editText1Hint);
        editText1.setTextSize(16);
        createdEditText1Layout.addView(editText1);
    }
}

Намерение передать строку второму действию

    public void openResult() {
    String productName = editText1.getText().toString();
    Intent intent2 = new Intent(this, ResultActivity.class);
    intent2.putExtra("product", productName);
    startActivity(intent2);
}

public  void buttonResultClick(View view){
    openResult();
}

Второе действие

    int i=1;
    int numberOfButtons = 2;
    for(i=1;i<numberOfButtons;i++) {
        LinearLayout layoutForProductName = findViewById(R.id.layoutForProductName);
        TextView productNameTextView = new TextView(this);
        LinearLayout.LayoutParams layoutParamsForProductNameTextView = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        productNameTextView.setLayoutParams(layoutParamsForProductNameTextView);
        productNameTextView.setTextSize(40);
        String productName = getIntent().getStringExtra("product");
        productNameTextView.setText(productName);
        layoutForProductName.addView(productNameTextView);
    }

1 Ответ

1 голос
/ 11 июля 2020

Из того, что я могу сказать, это потому, что вы добавляете только один String productName

Вы можете решить эту проблему, передав массив строк, известный как String[]

    public void openResult() {
    ArrayList<String> productNames = new ArrayList<String>();
    for(int y=0; y < createdEditText1Layout.getChildCount(); y++)
    {
        if((View)layout.getChildAt(y) instanceof TextView){
            String productName = editText1.getText().toString();
            productNames.add(productName);
        }
    }
    
    Intent intent2 = new Intent(this, ResultActivity.class);
    intent2.putStringArrayListExtra("product", productNames);
    startActivity(intent2);
}

, а затем в второе действие, которое вы бы вспомнили, например,

int i=1;
int numberOfButtons = 2;
for(i=1;i<numberOfButtons;i++) {
    LinearLayout layoutForProductName = findViewById(R.id.layoutForProductName);
    TextView productNameTextView = new TextView(this);
    LinearLayout.LayoutParams layoutParamsForProductNameTextView = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    productNameTextView.setLayoutParams(layoutParamsForProductNameTextView);
    productNameTextView.setTextSize(40);
    String productName = getIntent().getExtras().getStringArrayList("product").get(i);
    productNameTextView.setText(productName);
    layoutForProductName.addView(productNameTextView);
}
...