onsave / onpause将从一个活动创建的数据保存到另一个活动

时间:2013-11-03 03:10:08

标签: android database oncreate onpause

我对编程很新,只是一个周末的爱好。我想创建一个类似于交互式日历的应用程序,基本上就像这样......

主活动会显示一个日历,您可以在该日历中点按日期,然后将启动新的活动。在此新活动中,您可以为项目选择一个类别,并在选择类别时将ImageButton添加到日历日期。放置按钮后,您可以点击它并设置额外信息(警报,地点,详细信息等)

我已经做了所有的日历布局,按钮到不同的活动和动态添加日历日期ImageButton,但我已经走到了死胡同的方式如何 保存用户添加的数据(ImageButton); '在activityB中单击button1(例如运动日期)在activityA(日历)中创建棒球的动态图像按钮 布局,所以我的问题是如何永久保存这些数据(可以被用户删除)。

我花了最近几天阅读Onpause,onSaveinstancestate,onConfiguration,SQL,片段和数据库。但是我无法对如何应用它做出正面或反面,更不用说将它应用于从另一个活动创建的活动对象,我非常感谢任何见解。

使用创建动态按钮的按钮的活动代码:

 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));

             }
         }





}

1 个答案:

答案 0 :(得分:1)

我相信你在这里提出两件不同的事情:

  1. 如何在Activities之间传递数据(以及如何恢复活动)
  2. 如何在应用程序中永久保存数据
  3. 对于第一个,有几个例子。点击此处this answer。在我看来,你一直在阅读有关恢复Activities的内容并不是你想做的事情(至少现在还没有)。当Android需要释放内存时,它会导致Activities被删除,一个好的应用程序会将Activity的当前状态保存在onSaveInstanceState()上(即,它会保存它想要恢复的数据)活动在Bundle中再次启动。查看Android Developer网站。

    关于第二个,您需要将数据保存在设备存储器(SQLite,文件系统或SharedPreferences)中。所以基本上你应该保存你想恢复的数据,你的解释应该是一组:

    • 日期
    • 分类
    • 闹钟时间
    • 放置
    • 详细

    如果我是你,我会创建一个SQLite数据库,其中包含一个Table,其中包含您要保存的Columns。将新项目添加到日历时保存数据,并在应用程序启动时加载所有项目数据。