Передайте значение, полученное из поля EditText, в TextView на следующем экране - PullRequest
1 голос
/ 16 ноября 2011

У меня есть два Java-класса, HelloAndroidActivity и GetTasks.Я хочу попытаться получить текст из поля «Редактировать текст» из первого действия, нажав кнопку, и получить это значение в следующем задании GetTasks и отобразить его в текстовом представлении.Мой код такой, как показано:

HelloAndroidActivity

Button save = (Button) findViewById(R.id.save);
    save.setOnClickListener(new OnClickListener() {

        public void onClick (View v) {

            Intent i = new Intent(HelloAndroidActivity.this, GetTasks.class);
            //i.setClass(HelloAndroidActivity.this, GetTasks.class);
            EditText taskname = (EditText) findViewById(R.id.task_name);
            String task_name = taskname.getEditableText().toString();
            Log.d("Task Name", task_name + "");
            i.putExtra("taskname", task_name);
            startActivity(i);

        }
    });

GetTasks

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_page_layout);

    CharSequence task_name = (CharSequence) findViewById(R.id.task_name);
    Log.d("Here", task_name + "");

    Intent i2 = getIntent();
    taskname = i2.getStringExtra("taskname");

    TextView text = (TextView) findViewById(R.id.gettaskname);
    text.setText(taskname);


}    

Можете ли вы сказать мне, что я делаю неправильно?Мое приложение закрывается само по себе.Вместо передачи переменной, если я передаю строковую переменную, я могу видеть это в текстовом представлении?Связано ли это с файлом манифеста?У меня есть намерение для обоих видов деятельности.Любая помощь в этом отношении приветствуется.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Я считаю, что линия

CharSequence task_name = (CharSequence) findViewById(R.id.task_name);

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

0 голосов
/ 16 ноября 2011

Вместо (CharSequence) используйте (EditText), то есть тип объекта макета, из которого вы извлекаете данные, как определено в файле XML макета.


В вашем методе GetTasks.onCreate вам нужно ввести значения, которые вы передали из намерения в HelloAndroidActivity.

Вы делаете это так:

Bundle extras = getIntent().getExtras();
if (extras ==null) { return;} 
String taskname = extras.getString("taskname");

См. Следующую ссылку для хорошего учебника по использованию намерений

...