Как перенести данные из одной активности в другую в android

Это может показаться простым, но я не могу заставить его работать. У меня есть два вида деятельности. Первая из них является формой, а вторая – данными из файла JSON на основе значений, введенных в первом действии.

Поэтому я пытаюсь сделать простую версию. У меня есть EditText и кнопка, поэтому, когда они нажимают кнопку, все, что было в EditText, будет в TextView следующего действия.

Вот мой код: Основная деятельность

static TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.editText1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void transferIT(View view){ Intent intent = new Intent(this, Page.class); startActivity(intent); } public static String getText(){ String data = (String) textView.getText(); return data; } 

Основной XML

 <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView1" android:layout_centerHorizontal="true" android:ems="10" android:hint="Enter Text to transfer" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="Transfer it" android:onClick="transferIT" /> 

Вторая активность

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_page); // Show the Up button in the action bar. setupActionBar(); TextView enteredValue = (TextView)findViewById(R.id.text); enteredValue.setText(MainActivity.getText()); } 

Второй XML

 <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="58dp" /> 

Таким образом, я создал метод для данных EditText, а в другой операции я вызываю его, чтобы получить к нему доступ. В настоящее время, когда я нажимаю кнопку, она перестает работать. Итак, каково ваше решение для получения данных формы в другой деятельности?

В первом упражнении вы должны добавить дополнительный аргумент:

 // I assume Page.class is your second ativity Intent intent = new Intent(this, Page.class); intent.putExtra("arg", getText()); // getText() SHOULD NOT be static!!! startActivity(intent); 

Затем во втором действии вы возвращаете аргумент следующим образом:

 String passedArg = getIntent().getExtras().getString("arg"); enteredValue.setText(passedArg); 

Также хорошо хранить строку «arg» в MainActivity как постоянную и всегда ссылаться на нее в других местах.

 public static final String ARG_FROM_MAIN = "arg"; 

Вы отправляете данные в намерении, когда вы вызываете второе действие. Это довольно фундаментальный материал. Я предлагаю вам ознакомиться с концепциями Intents и Parcelable в Android и Serialization на Java, которые связаны с вашим вопросом.

Вы должны изменить

  static TextView textView; textView = (TextView) findViewById(R.id.editText1); 

в

  EditText ed1; ed1 = (EditText) findViewById(R.id.editText1); 

У вас есть

 <EditText android:id="@+id/editText1" // it is edittext not textview 

затем

 public void transferIT(View view){ String value = ed1.getText().toString() Intent intent = new Intent(this, Page.class); intent.putExtra("key",value); startActivity(intent); } 

Затем в onCreate второй активности

 String value = getIntent().getExtras().getString("key"); 

Мы отправляем данные из одной активности в другую, где первая активность – mainActivity, а другая – otherActivity для mainActivity

  `Intent in = new Intent(this, OtherActivity.class); in.putExtra("name", etname.getText().toString()); in.putExtra("job", etjob.getText().toString()); in.putExtra("sal", etsal.getText().toString()); startActivity(in);` 

Для otherActivity

  `Intent in = getIntent(); tv.setText(in.getStringExtra("name")+"\n"+in.getStringExtra("job")+" "+in.getStringExtra("sal")); 

`