Android: положить дополнительные и интенты
У меня проблема с передачей строк из фрагмента в другой вид деятельности. Я пробовал многочисленные способы передачи их с помощью намерений (например, обычные дополнения, связки), но дополнения всегда нулевые в упражнении.
Я смотрел на
http://www.vogella.com/articles/AndroidIntent/ Но без изменений http://developer.android.com/training/basics/firstapp/starting-activity.html Этот метод передачи данных также не работает
Другие подобные вопросы по stackru - но это не совсем то же самое
То, что я пытаюсь сделать, это получить текст, который был введен в два EditTexts во фрагменте, а затем передать этот текст операции, где два EditTexts там заполнены одинаковым текстом. Проблема в том, что ничего не появляется в двух EditTexts в действии. Я знаю, что EditTexts во фрагментах работают, потому что могут создавать уведомления, используя их.
Мой код: я удалил вещи, которые я считаю ненужными, например, добавление фрагмента в макет навигационной панели. Прошу прощения за отсутствующие скобки - я удалил много кода, а некоторые могли быть удалены случайно!:-)
Это фрагмент, где я создаю намерение:
// Package declaring and importing stuff
public class QuickNoteFragment extends Fragment implements OnClickListener {
// Removed some stuff
EditText body;
EditText title;
Button create;
int counter = 0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.quicknote, container, false);
body = (EditText) rootView.findViewById(R.id.qn_et_body);
title = (EditText) rootView.findViewById(R.id.qn_et_title);
create.setOnClickListener(this);
// Removed stuff
getActivity().setTitle(noter_activity); // Part of navigation drawer?
return rootView;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.qn_b_create:
String content_text = body.getText().toString();
String content_title = title.getText().toString();
if (content_title.length() >=1){
Context context = v.getContext();
// This intent does not seem to work
Intent eIntent = new Intent(context, QuickNoteEdit.class);
eIntent.putExtra("eTitle", content_title);
eIntent.putExtra("eText", content_text);
PendingIntent EditPendingIntent = PendingIntent.getActivity(context, 0, eIntent, 0);
// This intent works comletely. This is called when a notification action button is pressed
Intent qnCancel = new Intent();
qnCancel.setAction("com.RiThBo.noter.qnCancelBroadcast");
Bundle extras = new Bundle();
extras.putInt("valueOfCounter", counter);
qnCancel.putExtras(extras);
startBroadcast(qnCancel);
PendingIntent pQnCancel = PendingIntent.getBroadcast(this.getActivity(), 0, qnCancel, 0);
// Creates Notification
} else {
// Do something
}
case R.id.*** // Does something else
}
}
private void startBroadcast(Intent qnCancel) { // This is part of the correctly working intent
// TODO Auto-generated method stub
}
}
Это мероприятие, где я пытаюсь получить дополнительные
// Removed package and imports
public class QuickNoteEdit extends Activity implements OnClickListener {
EditText body;
EditText title;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.quicknote_edit);
variableConnector(); // This gets the id for all the items in the xml
Intent intent = getIntent();
String gotTitle = intent.getStringExtra("content_title"); // This is where I think it equals null. Because the
String gotBody = intent.getStringExtra("content_text");
title.setText(gotTitle);
body.setText(gotBody);
}
private void variableConnector() {
// TODO Auto-generated method stub
body = (EditText) findViewById(R.id.qne_et_body);
title = (EditText) findViewById(R.id.qne_et_title);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
}
Спасибо
2 ответа
Вы кладете:
eIntent.putExtra("eTitle", content_title);
eIntent.putExtra("eText", content_text);
и когда вы читаете их:
String gotTitle = intent.getStringExtra("content_title");
String gotBody = intent.getStringExtra("content_text");
Вам нужно сопоставить ключи... поставьте "eTitle" и прочитайте "eTitle", а не "*content_title*"!
Вы помечаете свои дополнения с помощью "eTitle" и "eText" и пытаетесь получить их с помощью "content_title" и "content_text".
Переключиться на
String gotTitle = intent.getStringExtra("eTitle");
String gotBody = intent.getStringExtra("eText");
он должен работать.