2017-12-12 5 views
0

Jede Hilfe mit diesem wird sehr geschätzt. Ich versuche, Daten, die vom Benutzer eingegeben werden, in dynamisch generierte EditTexte in einer Aktivität aufzunehmen und die Daten in einer anderen Aktivität in TextViews einzufügen. Es stimmt zwar, dass ich an anderer Stelle ähnliche Fragen auf dieser Website fand, aber ich konnte das Problem nicht selbst lösen, also dachte ich mir, dass etwas in meinem Code jemanden hervorspringen lässt. Denken Sie daran, dass ich versucht habe, dies auf verschiedene Arten zu erreichen, so dass der Code hässlich sein könnte, weil ich frustriert war und immer wieder versuchte, mehr und mehr zu implementieren, damit es funktioniert.Erhalten Sie Daten von dynamisch erstellten EditTexts in einer anderen Aktivität

Aktivität A (eine Anzahl von EditTexts wird basierend auf einer Zahl erstellt, die der Benutzer eingibt, und ich muss nehmen, was der Benutzer in den EditTexts eingibt, vielleicht in einem Array ???? und in Aktivität B verschieben.

final Button submitButton = new Button(this); 
    submitButton.setText("Submit"); 
    submitButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      Intent intent = new Intent(ChoiceMaker.this, Randomizer.class); 
      startActivity(intent); 
      setContentView(R.layout.randomizer); 

     } 
    }); 


    btnCreate.setOnClickListener(new View.OnClickListener() { 
     public List<EditText> strings; 

     @Override 
     public void onClick(View v) { 
      List<EditText> allEds = null; 
      if (edtNoCreate.getText().toString().length() > 0) { 
       try { 
        lnrDynamicEditTextHolder.removeAllViews(); 
       } catch (Throwable e) { 
        e.printStackTrace(); 
       } 

       int length = Integer.parseInt(edtNoCreate.getText().toString()); 
       EditText editText; 
       allEds = new ArrayList<EditText>(); 

       for (int i = 0; i < length; i++) { 
        editText = new EditText(ChoiceMaker.this); 
        allEds.add(editText); 
        editText.setId(i + 1); 
        editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
        editText.setHint("Possible choice " + (i + 1)); 
        editText.setTextColor(Color.parseColor("#c0b1ff")); 
        editText.setTextSize(38); 
        lnrDynamicEditTextHolder.addView(editText); 


       } 


       LinearLayout layout = (LinearLayout) findViewById(R.id.choiceMakerLayout); 
       layout.addView(submitButton); 
       submitButton.setBackgroundColor(Color.BLUE); 

       String[] strings = new String[allEds.size()]; 

       for(int i=0; i < allEds.size(); i++){ 
        strings[i] = allEds.get(i).getText().toString(); 
       } 

       Intent intent = new Intent(ChoiceMaker.this, Randomizer.class); 
       intent.putExtra("strings", strings); 

      } 

     } 

    } 

Aktivität B

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.randomizer); 

    Intent intent = getIntent(); 
    String[] stringArray = intent.getStringArrayExtra("strings"); 
    int textViewCount = 10; 

    TextView[] textViewArray = new TextView[textViewCount]; 

    for (int i = 0; i < textViewCount; i++) { 
     textViewArray[i] = new TextView(this); 
     textViewArray[i].setText(stringArray); 



}} 
+0

Wenn es keine Hilfe, das ich den Fehler eines Null-Zeiger gegeben habe und wenn ich es debuggen zeigt das Array als null. Ich glaube, dass die Daten in Aktivität A niemals in das Array gelangen. – Dragon

Antwort

0

In diesem Fall müssen Sie die Ansichten verfolgen Sie mit den "Tags" erstellen, während die Ansichten es zu schaffen machen wie unten,

   for (int i = 0; i < length; i++) { 
        editText = new EditText(ChoiceMaker.this); 
        allEds.add(editText); 

        editText.setTag(i); //mark this step 

        editText.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
        editText.setHint("Possible choice " + (i + 1)); 
        editText.setTextColor(Color.parseColor("#c0b1ff")); 
        editText.setTextSize(38); 
        lnrDynamicEditTextHolder.addView(editText); 
       } 

und dann, wenn Sie eine andere Aktivität starten wollen Daten zu übergeben, zB: auf die Schaltfläche klicken,

button.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         ArrayList<String> arrayList = new ArrayList<>(); 
         for (int i = 0; i < lnrDynamicEditTextHolder.getChildCount(); i++) { 
          arrayList.add(((EditText) lnrDynamicEditTextHolder.findViewWithTag(i)).getText().toString()); 
         } 

         Intent intent = new Intent(ChoiceMaker.this, Randomizer.class); 
         intent.putStringArrayListExtra("strings", arrayList); 
         startActivity(intent); 
        } 
       }); 
Verwandte Themen