2011-12-14 3 views
2

Я пытаюсь отобразить пользовательский ввод после нажатия кнопки «отправить». Я создал форму и добавил код для базовой проверки (текст, номер, длина строки и т. Д.) После нажатия кнопки отправки. Этот раздел работает правильно.Отображение ввода пользователя после нажатия кнопки

Я хочу, чтобы кнопка отправки отображала ввод в новом представлении, если все поля действительны. Я также хочу добавить функцию, которая позволяет пользователю редактировать свою информацию (под отображаемым вводом). Я не уверен, с чего начать, в основном, как создать новое представление из действия onClick и как отправить переменные в это представление. Нужно ли мне создавать для этого новый класс и XML-файл? Если да, то каков наилучший способ сделать это?

Edit:

public void sendFeedback(View button) { 
    final EditText firstnameField = (EditText)this.findViewById(R.id.EditTextFirstName); 
    String firstname = firstnameField.getText().toString(); 
    int fnlen=firstname.length(); 
    if (fnlen<=0){ 
     firstnameField.setError("Enter your first name"); 
    } 

ответ

0

Вы можете добавить эти поля ввода пользователя к нормальной компоновке и установите его видимость невидимый как android:visibility="INVISIBLE". Сначала он не отображается пользователю.

В коде вы можете снова установить видимость в VISIBLE и отобразить эти виды.

findViewById(R.id.yourinvisibleview).setVisibility(View.VISIBLE); 
0

Насколько я знаю об Android-dev, все, что вам нужно сделать, это создать новую активность и дать ей цель начать.

Что касается передачи значений для нового класса (активности), вы можете использовать конструктор и назначить значения, которые вы хотите передать в частные или государственные свойства класса (активность)

+0

Использование конструктора для передачи значений не работает afaik. Для передачи значения вы должны использовать дополнительные намерения. Но тогда это жизнеспособное решение. –

+0

не так уж и хорош в Android dev: D Я больше типа iOS, жизнь намного проще на той стороне забора – Armand

+0

Я отредактировал предыдущее сообщение с кодом. Где я могу добавить действие с намерением? Будет ли это в рамках этой функции или новой? – mkyong

0

Для передачи значений в новую деятельность вы необходимо использовать намерение.

Intent intent = new Intent(MyActivity.this,NextActivity.class); 
intent.putExtra(key1,value1); 
intent.putExtra(key2,value2); 

так далее ..

и в вашем NextActivity к GetData использовать

getIntent().getStringExtra(key1); // for String values 
getIntent().getBooleanExtra(key2,false); // for Boolean values 

Более подробную информацию о Intent Check Intents.

+0

Это то, над чем я сейчас работаю. В некоторых учебниках упоминается файл AndroidManifest.xml. Я вижу это, но мне нужно вообще его изменить? – mkyong

+0

Если вы добавляете новую активность, которая запускается, вам нужно добавить эту активность в манифест. –

0

1-е решение: Вы используете одно действие и один макет xml. В макете XML добавить две кнопки (EDIT и др Validate) с:

android:visibility="gone" 

В SUBMIT OnClickListener, просто сделать все ваши редактируемые EditText нередактируемый так:

((EditText) findViewById(R.id.date)).setKeyListener(null); 

и сделать кнопка ВВЕСТИ невидимы, и EDIT и VALIDATE VISIBLE:

((Button) findViewById(R.id.submit)).setVisibility(View.GONE); 
((Button) findViewById(R.id.edit)).setVisibility(View.VISIBLE); 
((Button) findViewById(R.id.validate)).setVisibility(View.VISIBLE); 

В Edit OnClickListener, вы вернетесь обратно:

KeyListener keyListener = new KeyListener() { 

       @Override 
      public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public boolean onKeyOther(View view, Editable text, KeyEvent event) { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public boolean onKeyDown(View view, Editable text, int keyCode, 
        KeyEvent event) { 
       // TODO Auto-generated method stub 
       return false; 
      } 

      @Override 
      public int getInputType() { 
       // TODO Auto-generated method stub 
       return 0; 
      } 

      @Override 
      public void clearMetaKeyState(View view, Editable content, int states) { 
       // TODO Auto-generated method stub 

      } 
     }; 

    ((EditText) findViewById(R.id.date)).setKeyListener(keyListener); 
    ... 
    ((Button) findViewById(R.id.submit)).setVisibility(View.VISIBLE); 
    ((Button) findViewById(R.id.edit)).setVisibility(View.GONE); 
    ((Button) findViewById(R.id.validate)).setVisibility(View.GONE); 

И в VALIDATE OnClickListener вы действительно представляете.

2-е решение: Вы создаете новое действие и новый макет, чтобы отображать значения.Проходите значения на вторую активность намерения, как это:

String data = "somedata"; 
Intent intent = new Intent(this, YourSecondActivity.class); 
intent.putExtra("firstData", data); 
startActivity(intent); 

Вы извлекать данные из второй активности, как это:

Bundle extras = getIntent().getExtras(); 
String data = extras.getString("firstData"); 

Надеется, что это помогает.