Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android onsave/onpause将从一个活动创建的数据保存到另一个活动_Android_Database_Oncreate_Onpause - Fatal编程技术网

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

Android onsave/onpause将从一个活动创建的数据保存到另一个活动,android,database,oncreate,onpause,Android,Database,Oncreate,Onpause,我对编程很陌生,只是有点周末的爱好。我想创建一个类似于互动日历的应用程序,基本上是这样工作的 主活动显示一个日历,您可以在其中点击日期,然后启动新活动。在这个新活动中,您可以为您的项目选择一个类别,并且在选择该类别后,将在日历日期中添加一个ImageButton。放置按钮后,您可以点击按钮并设置额外信息(报警、位置、详细信息等) 我已经完成了所有的日历布局、不同活动的按钮以及动态添加日历日期图像按钮,但是我在如何操作上遇到了死胡同 保存用户添加的数据(ImageButton);'单击activi

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

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

我已经完成了所有的日历布局、不同活动的按钮以及动态添加日历日期图像按钮,但是我在如何操作上遇到了死胡同 保存用户添加的数据(ImageButton);'单击activityB中的按钮1(例如运动日期)可在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));

             }
         }





}

我相信你在问两个不同的问题:

  • 如何在
    活动之间传递数据(以及如何恢复活动)
  • 如何在应用程序中永久保存数据
  • 对于第一个例子,有几个例子。在这里查看。在我看来,您一直在阅读的有关恢复
    活动的内容并不是您想要做的(至少现在还不是)。当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);'所有的设置