Отображение пользовательского ввода после нажатия кнопки - PullRequest
2 голосов
/ 14 декабря 2011

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

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

Редактировать:

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

Ответы [ 4 ]

0 голосов
/ 14 декабря 2011

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

android:visibility="gone"

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

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

и сделайте кнопку SUBMIT невидимой, а 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");

Надеюсь, это поможет.

0 голосов
/ 14 декабря 2011

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

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

0 голосов
/ 14 декабря 2011

Для передачи значений в новое действие вам нужно использовать Intent.

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

и т. Д.

, а в вашей следующей функции GetData используйте

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

Подробнее о проверке намерений Содержание .

0 голосов
/ 14 декабря 2011

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

В коде вы можете снова установить видимость VISIBLE, и эти виды появятся.

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