2012-06-27 3 views
0

Я создал этот простой пример, чтобы проиллюстрировать, что я пытаюсь выполнить.Мне нужна помощь в использовании жизненного цикла приложения Android.

Это мой первый макет:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.*; 
import android.widget.RadioGroup.OnCheckedChangeListener; 

public class LifeCycleActivity extends Activity implements OnCheckedChangeListener { 
/** Called when the activity is first created. */ 

private RadioButton rbR, rbG, rbB; 
private RadioGroup rg; 
private Button next; 
int color=0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    rbR = (RadioButton) findViewById(R.id.radio0); 
    rbB = (RadioButton) findViewById(R.id.radio1); 
    rbG = (RadioButton) findViewById(R.id.radio2); 
    rg = (RadioGroup) findViewById(R.id.radioGroup1); 
    next = (Button) findViewById(R.id.button1); 

    final Intent it = new Intent(this, next.class); 
    final Bundle b = new Bundle(); 

    rg.setOnCheckedChangeListener(this); 
    next.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      b.putInt("color", color); 
      it.putExtras(b); 
      startActivity(it); 
     } 
    }); 
} 

public void onCheckedChanged(RadioGroup group, int checkedId) { 
    // TODO Auto-generated method stub 
    if (checkedId==rbR.getId()) color=1; 
    if (checkedId==rbB.getId()) color=2; 
    if (checkedId==rbG.getId()) color=3; 
} 

}

Это вторая раскладка:

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.view.View; 
import android.widget.*; 

public class next extends Activity { 

private LinearLayout ll; 
private ImageView im; 
private TextView tv; 
private Button save; 
private Bundle extras; 
private int color=0; 
private String selColor=""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.next); 

    ll = (LinearLayout) findViewById(R.id.mainll); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    im = new ImageView(this); 
    tv = new TextView(this); 
    save = new Button(this); 
    save.setText("save"); 

    extras = getIntent().getExtras(); 
    color = extras.getInt("color"); 

    im.setImageResource(R.drawable.ic_launcher); 
    ll.addView(im); 

    if (color == 1) selColor = "RED"; 
    if (color == 2) selColor = "BLUE"; 
    if (color == 3) selColor = "GREEN"; 
    tv.setText(selColor); 
    tv.setGravity(Gravity.CENTER); 
    ll.addView(tv); 
    ll.addView(save); 

    save.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      // here i want to save and exit 
      // so i can call onPause(), then finish() 
      // do not know how exactly since i have to follow some goals 
      // that i need for this example 
     } 
    }); 
} 

}

У меня также есть main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<RadioGroup 
    android:id="@+id/radioGroup1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <RadioButton 
     android:id="@+id/radio0" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:text="red" /> 

    <RadioButton 
     android:id="@+id/radio1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="blue" /> 

    <RadioButton 
     android:id="@+id/radio2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="green" /> 
</RadioGroup> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="next" /> 

</LinearLayout> 

И next.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainll" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

</LinearLayout> 

Как вы можете видеть, на основе выбора цвета в первой схеме я динамически построить второй макет.

Это то, что я хочу сделать, помогите мне, пожалуйста (добавить код, если это возможно):

  1. на втором макете, если я нажимаю сохранить, я хочу, чтобы сохранить приложение состояние (то, что я построил на этой странице) и выйти.
  2. Если я добавлю еще одну кнопку для создания других динамических объектов на этом макете (EditText с именем или другим макетом с разными объектами), то, если пользователь сохранит, он также сохранит новые объекты (эту часть можно сделать позже)
  3. Если пользователь сохранил эту страницу один раз, я хочу, чтобы он смог получить то же самое состояние приложения, в котором он/она находился перед выходом (конечно, если он выбирает один и тот же переключатель).
  4. Если он выбирает другую кнопку, мне не нужно показывать это предыдущее состояние, так как выбор отличается.
+1

использовать базу данных SQLite для хранения состояний, это всегда самый безопасный вариант. вы всегда можете обновить базу данных, вызвав метод onPause() и onStop(). :) –

+0

Я тоже могу сохранить все с помощью sharedpreferencea, но я не могу правильно использовать функции onPause и onStart, чтобы получить результаты, которые я хочу. Спасибо, хотя – Brian

+0

Помогите пожалуйста .... – Brian

ответ

0

Трюк с sharedpreferences сделал для меня. Я, наконец, смог сделать то же самое и получить мои данные и onStart. Несмотря на то, что это сработало хорошо, я ценю ответ Kevin_Dingo, который вызывающе более профессиональный путь.

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