2016-11-27 24 views
0

在我的應用程序中,我需要在用戶註冊時從用戶捕獲多個數據。爲了避免將多個EditText打包成一個佈局,我決定在一個活動中使用多個佈局。一種佈局將捕獲電子郵件,另一個電話號碼等。當我在一個佈局中將數據輸入到EditText中時,按鈕會將我帶到下一個佈局。我做了什麼(作爲測試)是這樣的:在一個活動中捕獲多個佈局的數據

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)); 
       } 
      }); 

     } 
    }); 
} 
} 

輸出我得到的是這個(logcat的)

enter image description here

然後我就可以通過這個信息來自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個部分在單個註冊然後添加三個片段可以是在viewpager更好UX

所有的數據可以直接使用接口通過活動訪問的B/W片段和活性

+0

好吧,所以我找到了一種方法來做到這一點[這裏](http://stackoverflow.com/questions/18413309/how-to-implement-a-viewpager-with-different -fragments-layouts),但是,如何從每個片段獲取數據到託管它們的活動? –

+0

使用getter和setter方法或更好地使用Activty上實現的接口類 –

0

您可以將第一個活動的所有數據放到捆綁中,然後將捆綁放在intent的額外和第二個活動中獲取捆綁添加新數據並再次執行所有操作。

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

在第二屆活動中使用intent.getExtras()來獲取數據

+0

但我不需要去第二個活動。數據持久化將在SignupActivity –

+0

@ ojonugwa-ochalifu完成AFAIK,一個活動只有一個佈局。所以,你必須使用幾個活動。 – Steve

+0

WRONG.An活動可以有多個佈局 –

0

背後有什麼列表中的存儲數據的原因是什麼?在這種情況下,直接寫入數據對象MyObject,但考慮更準確地命名它。

如果您需要存儲多個電話號碼或電子郵件值。考慮將列表添加到MyObject數據結構中。

相關問題