2016-11-27 16 views
0

私のアプリでは、登録時に複数のデータをキャプチャする必要があります。複数のEditTextが1つのレイアウトにパックされないように、私は1つのアクティビティから複数のレイアウトを使用することに決めました。 1つのレイアウトは、電子メール、別の電話番号などを取得します。あるレイアウトでEditTextにデータを入力すると、ボタンが次の場所に移動します。この(LogCat)複数のレイアウトから1つのアクティビティでデータをキャプチャする

enter image description here

私は、渡すことができます

SignupActivity

public class SignupActivity extends AppCompatActivity { 

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

    final List<String> myData = new ArrayList<>(); 
    final EditText displayNameEditText = (EditText) findViewById(R.id.displayNameEditText); 

    Button mainNextButton = (Button) findViewById(R.id.nextButtonMain); 
    mainNextButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      myData.add(displayNameEditText.getText().toString()); 
      setContentView(R.layout.phone_numbers_capture); 
      final EditText phone1EditText = (EditText) findViewById(R.id.phone1EditText); 
      Button phoneNextButton = (Button) findViewById(R.id.phoneNumbersUINextButton); 
      phoneNextButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        myData.add(phone1EditText.getText().toString()); 
        Log.e("TAG IT", "Full name : " + myData.get(0)); 
        Log.e("TAG IT", "Phone 1 : " + myData.get(1)); 
       } 
      }); 

     } 
    }); 
} 
} 

私が手に出力されます。私は(テストとして)行っていることはこれですこの情報はmyDataから私が最後のレイアウトに行くときのように:

MyObject myObject = new MyObject(); 
myObject.setFullName(myData.get(0)) //Method expects a String, no issues 
myObject.setPhoneNumberOne(myData.get(1)) //Method expects a string, no issues 

今、私はこれがこれを行う最善の方法ではないと感じています。まず、各レイアウトから異なるデータタイプを取得する場合はどうすればよいですか?

List<Object> myDataが頭に浮かびますこれを達成するために他にどのようなアプローチをとることができますか?私がそれをそのまま残しておくと、私が言及した明白なデータ型のほかに、将来どのような問題が発生する可能性がありますか?

+0

あなたの目的にデータベースを使用する必要があります。 –

答えて

0

登録ページを複数のサブページに分割したい場合は、フラグメントをお勧めします。単一の登録に3つのセクションを持っている場合、例えば

は、次に3つの断片を追加するすべてのデータが直接インタフェースB/Wフラグメントおよび活性

を使用して、アクティビティを介してアクセスすることができ、より良いUX

ためviewpagerであってもよいです

+0

さて、私はこれを行う方法を見つけました[ここ](http://stackoverflow.com/questions/18413309/how-to-implement-a-viewpager-with-different -fragments-layouts)、各フラグメントのデータをそれらをホストするアクティビティにどのように取得するのですか? –

+0

GetterとSetterメソッドを使用するか、Activtyで実装されたインターフェイスクラスを使用するほうが良い –

0

1回目のアクティビティからすべてのデータをバンドルに入れてから、バンドルをインテントのエクストラと2回目のアクティビティに入れると、バンドルに新しいデータを追加してすべてをやり直すことができます。第2回の活動で

Bundle bundle = new Bundle(); 
bundle.putString("Name", "full name"); 
... 
intent.putExtras(bundle); 

(intent.getExtrasを使用)のデータを取得するために

+0

2番目のアクティビティに移動する必要はありません。SignupActivity –

+0

@ ojonugwa-ochalifu AFAIKでデータの永続化が行われます。 。したがって、いくつかのアクティビティを使用する必要があります。 – Steve

+0

WRONG.Anアクティビティは複数のレイアウトを持つことができます –

0

、リスト内のデータを格納するの背後にある理由は何ですか?この場合はデータオブジェクトに直接書き込んでください。MyObjectですが、より正確に名前を付けることを検討してください。

複数の電話番号または電子メール値を保存する必要がある場合。 MyObject`データ構造にリストを追加することを検討してください。

関連する問題