在 Android studio 中动态添加和保存按钮
Dynamically Add and Save buttons in Android studio
目前我设法在视图上动态创建按钮
这是我创建按钮的代码;
public void Add_on(View v) {
AlertDialog.Builder mbuilder = new AlertDialog.Builder(Mb.this);
View mview = getLayoutInflater().inflate(R.layout.activity_mb1, null);
EditText number = (EditText) mview.findViewById(R.id.etnum);
Button Create = (Button) mview.findViewById(R.id.etcreate);
Button Cancel = (Button) mview.findViewById(R.id.etcancel);
Create.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if (!number.getText().toString().isEmpty())
{
Toast.makeText(Mb.this, "Number can be NULL",Toast.LENGTH_SHORT).show();
LinearLayout yenilayout = new LinearLayout(Mb.this);
int n =1;
for(int i=0; i<n; i++)
{
Button yeniButton = new Button(Mb.this);
yenilayout.addView(yeniButton);
yeniButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Mb.this, "Button is working",Toast.LENGTH_SHORT).show();
}
});
}
altlayout.addView(yenilayout);
} else {
Toast.makeText(Mb.this, "Number cannot be NULL",Toast.LENGTH_SHORT).show();
}
}
});
但每当我想起 activity 时,这些按钮就不再存在了。那么我可以知道我可以将按钮永久放在那里吗?
感谢您的建议
您可以使用 Bundle
保存 activity 的状态并在 onCreate()
方法中重新创建它。这适用于 Activity
的特定实例,因此可用于保存有关选择或用户输入等的数据,但 不是 您需要跨应用程序持久保存的数据发射。
要使用 Bundle
,请覆盖 Activity
class 中的 onSaveInstanceState(Bundle)
和 onRestoreInstanceState(Bundle)
方法。您可以使用 Bundle
中的方法在地图中保存您喜欢的任何数据,并在 onRestoreInstanceState(Bundle)
中取回它,这在 onStart()
.
中调用
虽然默认实现已经处理了大部分 UI 事情,但我原以为这会为您跟踪您的按钮,所以您的问题实际上可能是关于将一些持久数据与您的按钮相关联申请。 (这也意味着,如果您确实重写了上述方法,则应确保在实现的第一行调用超级方法)。
如果您需要跨应用程序启动的持久数据,那么最快捷、最简单的方法是使用 SharedPreferences
,请参阅 this 答案示例。
目前我设法在视图上动态创建按钮
这是我创建按钮的代码;
public void Add_on(View v) {
AlertDialog.Builder mbuilder = new AlertDialog.Builder(Mb.this);
View mview = getLayoutInflater().inflate(R.layout.activity_mb1, null);
EditText number = (EditText) mview.findViewById(R.id.etnum);
Button Create = (Button) mview.findViewById(R.id.etcreate);
Button Cancel = (Button) mview.findViewById(R.id.etcancel);
Create.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if (!number.getText().toString().isEmpty())
{
Toast.makeText(Mb.this, "Number can be NULL",Toast.LENGTH_SHORT).show();
LinearLayout yenilayout = new LinearLayout(Mb.this);
int n =1;
for(int i=0; i<n; i++)
{
Button yeniButton = new Button(Mb.this);
yenilayout.addView(yeniButton);
yeniButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(Mb.this, "Button is working",Toast.LENGTH_SHORT).show();
}
});
}
altlayout.addView(yenilayout);
} else {
Toast.makeText(Mb.this, "Number cannot be NULL",Toast.LENGTH_SHORT).show();
}
}
});
但每当我想起 activity 时,这些按钮就不再存在了。那么我可以知道我可以将按钮永久放在那里吗?
感谢您的建议
您可以使用 Bundle
保存 activity 的状态并在 onCreate()
方法中重新创建它。这适用于 Activity
的特定实例,因此可用于保存有关选择或用户输入等的数据,但 不是 您需要跨应用程序持久保存的数据发射。
要使用 Bundle
,请覆盖 Activity
class 中的 onSaveInstanceState(Bundle)
和 onRestoreInstanceState(Bundle)
方法。您可以使用 Bundle
中的方法在地图中保存您喜欢的任何数据,并在 onRestoreInstanceState(Bundle)
中取回它,这在 onStart()
.
虽然默认实现已经处理了大部分 UI 事情,但我原以为这会为您跟踪您的按钮,所以您的问题实际上可能是关于将一些持久数据与您的按钮相关联申请。 (这也意味着,如果您确实重写了上述方法,则应确保在实现的第一行调用超级方法)。
如果您需要跨应用程序启动的持久数据,那么最快捷、最简单的方法是使用 SharedPreferences
,请参阅 this 答案示例。