0

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

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

我已经完成了所有日历布局、不同活动的按钮以及动态添加日历日期 ImageButton,但我在如何保存用户添加的数据(ImageButton)方面遇到了死胡同;'单击活动B(例如运动日期)中的按钮1 在活动A(日历)布局中创建棒球的动态图像按钮,所以我的问题是如何永久保存该数据(可以由用户删除)。

最近几天我一直在阅读 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));

             }
         }





}
4

1 回答 1

1

我相信你在这里问两个不同的事情:

  1. 如何在Activities(以及如何恢复活动)之间传递数据
  2. 如何在您的应用程序中永久保存数据

对于第一个,有几个例子。在此处检查此答案。在我看来,您一直在阅读的有关恢复Activities的内容并不是您想要做的(至少现在还没有)。当Android需要释放内存时它会杀死你的Activities,一个好的应用程序会保存当前的Activityon 状态onSaveInstanceState()(即它会在Activity再次启动时保存它想要恢复的数据Bundle)。在此查看Android 开发者网站。

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

  • 日期
  • 类别
  • 闹铃时间
  • 地方
  • 细节

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

于 2013-11-03T06:27:24.893 回答