2013-11-03 3 views
0

Я очень новичок в программировании, всего лишь увлекательное увлечение. Я хочу создать приложение, подобное интерактивному календарю, в основном это работает так.onsave/onpause сохранять данные, созданные из одной активности в другую

Основная активность показывает календарь, в котором вы можете нажать на дату, и будет запущено новое действие. В этом новом действии вы можете выбрать категорию для своего элемента, а ImageButton будет добавлен к календарной дате после выбора категории. После того, как кнопка была помещена, вы можете нажать на нее и установить дополнительную информацию (тревога, место, данные и т. Д.)

Я добрался до всего макета календаря, кнопок для различных действий и динамического добавления календаря date ImageButton, но я зашел в тупик о том, как сохранить данные (ImageButton), добавленные пользователем; «Нажатие кнопки1 в ActivityB (например, спортивная дата) создает кнопку динамического изображения бейсбола в макете activityA (calendar) , поэтому мой вопрос заключается в том, как я могу сохранить эти данные навсегда (может быть удален пользователем).

Я провел последние несколько дней, просматривая 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

Я считаю, вы спрашиваете, 2 разные вещи здесь:

  1. Как передавать данные между Activities (и как для возобновления деятельности)
  2. Как сохранить данные в вашей базе данных на постоянной основе

Для первого есть несколько примеров. Проверьте this answer здесь. Мне кажется, что то, что вы читали о восстановлении Activities, - это не то, что вы хотите сделать (по крайней мере, пока). Когда Android нужно освободить память, он может убить Activities, хорошее приложение сохранит текущий статус Activity на onSaveInstanceState() (то есть он сохранит данные, которые он хочет восстановить, когда активность снова запущена в Bundle). Проверьте Android Developer на этом сайте.

Что касается второго, вам необходимо сохранить данные в памяти устройства (SQLite, файловая система или SharedPreferences). Поэтому в основном вы должны сохранить данные, которые вы хотите восстановить, что из вашего объяснения должен быть группа:

  • Дата
  • Категория
  • Время сигнала
  • Место
  • Подробности

Если бы я был вами, я бы создал базу данных SQLite с одним Table, содержащим Columns вы хотите сохранить. Сохраните данные, когда новый элемент будет добавлен в календарь, и загрузите все данные элементов при запуске приложения.

+0

Будет ли это сохранять динамически созданный ImageButton в activity1, созданном из Activity 2? да, я смотрел на этот пример раньше, но я просто не могу понять, как я могу применить его для получения/установки ImageButton, нет функции для этого, могу ли я каким-либо образом назначить строку или int динамической кнопке? также используя этот метод, как мне управлять параметрами кнопки? например, куда он идет? – ToeKnee

+1

Нет простого способа сохранить компоненты, такие как кнопки. Все, что вы хотите сохранить, должно быть сохранено как примитивы (String, integers, ...). Я думаю, что подход БД имеет больше смысла в вашем случае, для сохранения одной из ваших кнопок потребуется сохранить все связанные данные, а затем, возвращаясь к активности 1, вы загрузите все кнопки из БД и создадите их. Как только вы загружаете эти данные, вы знаете, какая дата является этой кнопкой и какой значок отображать, вы также будете знать всю информацию (деталь и т. Д.), Которую вы хотите показать при нажатии, поэтому вы просто создаете слушателя, чтобы показать их. – momo

+0

Спасибо, много приятель, я сейчас немного в голове, так смущен. Есть ли примеры использования базы данных, которую вы могли бы сослаться на меня? Или руководства для начинающих? или что-нибудь окончательное по методу, который мне нужен, или он действительно не работает так? – ToeKnee

Смежные вопросы