Android onsave/onpause将从一个活动创建的数据保存到另一个活动
我对编程很陌生,只是有点周末的爱好。我想创建一个类似于互动日历的应用程序,基本上是这样工作的 主活动显示一个日历,您可以在其中点击日期,然后启动新活动。在这个新活动中,您可以为您的项目选择一个类别,并且在选择该类别后,将在日历日期中添加一个ImageButton。放置按钮后,您可以点击按钮并设置额外信息(报警、位置、详细信息等) 我已经完成了所有的日历布局、不同活动的按钮以及动态添加日历日期图像按钮,但是我在如何操作上遇到了死胡同 保存用户添加的数据(ImageButton);'单击activityB中的按钮1(例如运动日期)可在activityA(日历)中创建棒球的动态图像按钮 布局,所以我的问题是如何永久保存该数据(用户可以删除) 在过去的几天里,我阅读了Onpause、onSaveinstancestate、onConfiguration、SQL、片段和数据库。但我无法确定如何应用它,更不用说将它应用到从另一个活动创建的活动对象,我非常感谢任何见解 带有创建动态按钮的按钮的活动的我的代码:Android onsave/onpause将从一个活动创建的数据保存到另一个活动,android,database,oncreate,onpause,Android,Database,Oncreate,Onpause,我对编程很陌生,只是有点周末的爱好。我想创建一个类似于互动日历的应用程序,基本上是这样工作的 主活动显示一个日历,您可以在其中点击日期,然后启动新活动。在这个新活动中,您可以为您的项目选择一个类别,并且在选择该类别后,将在日历日期中添加一个ImageButton。放置按钮后,您可以点击按钮并设置额外信息(报警、位置、详细信息等) 我已经完成了所有的日历布局、不同活动的按钮以及动态添加日历日期图像按钮,但是我在如何操作上遇到了死胡同 保存用户添加的数据(ImageButton);'单击activi
package org.iimed.www;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import org.iimed.www.Sundayopen;
import android.widget.RelativeLayout;
import android.widget.TableLayout.LayoutParams;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
public class Penicillins extends Activity implements OnClickListener {
ImageButton addmed,ab;
RelativeLayout ll;
public void onCreate(Bundle SavedInstanceState){
super.onCreate(SavedInstanceState);
setContentView(R.layout.penicillin);
addmed =( ImageButton)findViewById(R.id.addmed);
addmed.setOnClickListener(this);
}
public void onClick(View v) {
switch (v.getId()){
case R.id.addmed:
setContentView(R.layout.sundayopen);
ll =(RelativeLayout) findViewById(R.id.sundayopen);
android.widget.LinearLayout.LayoutParams b = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
int i = 0;
ab = new ImageButton(this);
ab.setImageResource(R.drawable.adaba);
ab.setBackgroundColor(Color.TRANSPARENT);
ab.setLayoutParams(b);
ab.setId(i) ;
ab.getId();
ab.setTag(1);
ll.addView(ab);
}
}
}
My code for the activity the button appears in:
package org.iimed.www;
import java.util.ArrayList;
import android.R.string;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.view.View.OnClickListener;
public class Sundayopen extends Activity implements OnClickListener {
public static final Integer [] aba = {R.id.aba};
ImageButton ab;
public void onCreate(Bundle SavedInstanceState) {
super.onCreate(SavedInstanceState);
setContentView(R.layout.sundayopen);
ImageButton hb1 = (ImageButton) findViewById(R.id.homebutton1);
RelativeLayout ll =(RelativeLayout) findViewById(R.id.sundayopen);
ImageButton sbc = (ImageButton) findViewById(R.id.satlidopen);
ImageButton abb = (ImageButton) findViewById(R.id.abbutton);
sbc.setOnClickListener(this);
hb1.setOnClickListener(this);
abb.setOnClickListener(this);
}
public void onClick(View v){
switch (v.getId()) {
case R.id.homebutton1:
startActivity(new Intent(this, MainActivity.class));
break;
case R.id.satlidopen:
MediaPlayer media = MediaPlayer.create(Sundayopen.this, R.raw.openlid);
media.start();
startActivity(new Intent(this,Iimedja.class));
break;
case R.id.abbutton:
startActivity(new Intent(this, ImageTextListViewActivity.class));
}
}
}
我相信你在问两个不同的问题:
活动之间传递数据(以及如何恢复活动)
活动的内容并不是您想要做的(至少现在还不是)。当Android需要释放内存时,它可能会杀死您的活动
,一个好的应用程序会将活动
的当前状态保存在onSaveInstanceState()
(即,当活动再次启动时,它会将要恢复的数据保存在捆绑包中)。查看此网站
关于第二个,您需要将数据保存在设备内存中(SQLite
、文件系统或SharedReferences
)。因此,基本上您应该保存要恢复的数据,根据您的解释,这些数据应该是一组:
- 日期
- 类别
- 报警时间
- 放置
- 细节
如果我是你,我会创建一个SQLite
数据库,其中包含一个表
,其中包含要保存的列。将新项目添加到日历时保存数据,并在应用程序启动时加载所有项目数据。这会在“活动2”创建的“活动1”中保存动态创建的图像按钮吗?是的,我以前看过这个例子,但我不知道如何应用它来获取/设置ImageButton没有函数,我能给动态按钮分配一个字符串或int吗?同样使用该方法,我如何控制按钮的参数?比如它去了哪里?没有直接的方法来保存按钮之类的组件。要保留的所有内容都需要保存为基本体(字符串、整数等)。我认为DB方法在您的情况下更有意义,保存一个按钮需要保存所有相关数据,然后返回活动1时,您将从DB加载所有按钮并创建它们。一旦你加载了这些数据,你就知道按钮的日期和显示的图标,你也会知道你点击时想要显示的所有信息(细节等),所以你只需要创建一个监听器来显示它们。非常感谢,伙计,我现在有点不知所措,很困惑。有没有使用像这样的数据库的例子可以链接到我?或者初学者指南?或者任何关于我需要的方法的明确信息,或者它是否真的像那样工作?这个例子可能会帮助你,或者只是在谷歌上搜索android sqlite教程Hanks momo,我肯定会用它作为我的“日期、类别、报警时间、地点、详细信息”,但我仍然无法突破这个保存ImageButton的问题。在您的回答中,您是说onSave和onRestore不是我想要使用的,但是您给出的示例是在bundle中放入int并放入/获取它,但是我不能放入这样的动态ImageButton`ab=new ImageB ab.setImageResource(R.drawable.adaba);,ab.setBackgroundColor(颜色.透明);,ab.设置布局参数(b);ab.setId(i);,ab.getId(),ll.addView(ab);'所有的设置