Я пытаюсь сохранить кнопку, которую я динамически создаю для отдельного действия, но я не могу заставить его работать. Вот то, что я пытался в моем CreateButton.java:Сохранение динамически созданной кнопки android
private static final AtomicInteger sNextGeneratedId = new AtomicInteger(1);
public static int generateViewId() {
for (;;) {
final int result = sNextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
}
public void Submit (View view) {
Intent myIntent = new Intent(CreateNewClass.this, MainActivity.class);
EditText mEdit = (EditText)findViewById(R.id.class_name);
String name = mEdit.getText().toString();
mEdit = (EditText)findViewById(R.id.class_semester);
String semester = mEdit.getText().toString();
mEdit = (EditText)findViewById(R.id.class_year);
String year = mEdit.getText().toString();
Button myButton = new Button(this);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
myButton.setId(generateViewId());
}
else {
myButton.setId(Button.generateViewId());
}
myButton.setText(name + " " + semester + " " + year);
setContentView(R.layout.activity_main);
LinearLayout ll = (LinearLayout)findViewById(R.id.main_screen);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams
(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
ll.addView(myButton, layoutParams);
startActivity(myIntent);
}
А вот мой .xml для activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_screen"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/select" />
<Button
android:layout_height="wrap_content"
android:clickable="true"
android:autoLink="web"
android:layout_width="match_parent"
android:id="@+id/button_so"
android:text="@string/Google"
android:linksClickable="true"
android:onClick="goToGoogle"/>
<Button
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:text="@string/newClass"
android:autoLink="web"
android:clickable="true"
android:id="@+id/button_su"
android:onClick="goToCreate"/>
</LinearLayout>
Он динамически создает кнопку на mainActivity и переходит к нему, но Я не могу заставить его сохранить кнопку, она сразу же возвращается к двум оригинальным кнопкам.
Любая помощь действительно ценится, я новичок и просто пытаюсь изучить некоторые из этих вещей на стороне. Спасибо!
спасибо тонну, это работает, но я хочу, чтобы иметь возможность любого количества кнопок, а не только одного.Кажется, это просто добавляет кнопку на исходный экран, и если я пытаюсь добавить другую, она просто меняет текст этой кнопки, а не добавляет четвертую кнопку – seanscal
. На самом деле она не перезаписывает предыдущую кнопку, но старые не сохраняется в любом месте. Вам нужно, чтобы они были сохранены, поэтому они доступны после повторного запуска приложения? Или вам нужны только они, пока отображается активность? И все ли строки для всех кнопок, которые вы хотите добавить одновременно? –
Ах, да, я как-то понял, что это неправильно. Я определенно пытаюсь сохранить кнопки, чтобы они были доступны после перезапуска. У меня есть только строка, доступная для одной кнопки за раз. Поэтому в теории я бы начал с одной кнопки на главном экране, кнопки добавления. Я нажимаю кнопку добавления на главном экране, заполняю имя на втором экране, а затем имею 2 кнопки, добавление и вновь созданное. Затем, нажав добавить и сделать это снова, вы получите третий ... Если есть более простой способ сделать это, чем я думаю, не стесняйтесь говорить мне, я очень к этому знаком – seanscal