【发布时间】:2015-06-23 08:08:07
【问题描述】:
我已经看过以下问题和一堆其他问题:How to add a button dynamically in Android?
Dynamically Creating/Removing Buttons in Android
我有 2 个带有片段的活动。每次用户在第二个活动上按下一个按钮时,他们都会被重定向到主要活动,并且一个按钮被添加到页面中。尽管按钮已正确保存在 MainActivity 中的数组中,但布局中仅显示最近的按钮,但它被向下推,就好像其他按钮在其上方一样。
在 MainActivity 中:
private static List<Button> ideas = new ArrayList<Button>();
private static SharedPreferences sharedPref;
private Context myContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout, new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
Intent intent = getIntent();
Button newIdea = new Button(this);
newIdea.setText("NEW IDEA");
newIdea.setTranslationX(300);
newIdea.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), NewIdeaPageActivity.class);
startActivity(intent);
}
});
layout.addView(newIdea);
if (intent != null) {
if (intent.hasExtra("title")) {
Button button = new Button(this);
button.setId(ideas.size());
button.setText(getIntent().getStringExtra("title"));
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (ideas.size() == 0) {
params.addRule(RelativeLayout.ALIGN_PARENT_TOP);
} else {
params.addRule(RelativeLayout.BELOW, ideas.size() - 1);
}
layout.addView(button, params);
ideas.add(button);
}
}
}
MainActivity xml:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment"
android:name="com.zarwanhashem.ideatrackr.MainActivityFragment"
tools:layout="@layout/fragment_main" android:layout_width="match_parent"
android:layout_height="match_parent" />
MainActivity 片段 xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivityFragment"
android:id="@+id/fragment_main_layout">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Idea"
android:id="@+id/new_idea_button"
android:onClick="onNewIdeaButtonClicked"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
新创意按钮将他们带到第二个活动,在那里他们创建添加到主活动的按钮。知道为什么实际上只显示最近的按钮吗?调试时所有的按钮都会显示在想法数组中。
【问题讨论】:
-
如果您有多个按钮,您应该考虑使用列表视图。它是为这些东西而设计的。
-
@ElDuderino 我现在正在调查这个。好像有很多,没有更简单的方法吗?我的方法有什么问题?
-
我刚刚在我的回答中添加了一些关于 listview 教程的提示,
标签: java android button android-fragments