2012-04-28 4 views
1

Я пишу приложение, которое по существу является карточкой, которую можно перевернуть. На одной стороне есть определенные релевантные данные, которые говорят подсказку с одной стороны и изображение на другом. Оба стороны данных связаны . Моя проблема в том, что я могу перемещаться по картам, нажимая следующий, но когда я переворачиваю карту для изображения, я возвращаюсь к началу с момента перезагрузки первого действия. Как я могу решить проблему? Мой код: package org.v2.greTouch;Сохранение состояния при изменении взад и вперед на вид

import java.io.IOException; 
import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageButton; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class FlipCard extends Activity implements View.OnClickListener { 
/** Called when the activity is first created. */ 
Cursor cur; 
TextView tv; 
DbH db; 
ImageButton next,back; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    tv=(TextView)findViewById(R.id.TV_Word); 
    next=(ImageButton)findViewById(R.id.next); 
    back=(ImageButton)findViewById(R.id.back); 
    next.setOnClickListener(this); 
    back.setOnClickListener(this); 
    LinearLayout turn; 
    turn=(LinearLayout)findViewById(R.id.LL_Card); 
    turn.setOnClickListener(this); 
    try { 
     db=new DbH(this); 
    } catch (IOException e2) { 

     e2.printStackTrace(); 
    } 


     try { 
      db.createdatabase(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 

    db.opendatabase(); 
    cur=db.data(); 
    cur.moveToFirst(); 
    tv.setText(cur.getString(0)); 

} 
    @Override 
    public void onClick(View v) { 

switch(v.getId()) 
{ 
case R.id.next : 
    if(cur.isLast()) 
    { 
     cur.moveToFirst(); 
     tv.setText(""+cur.getString(0)); 
    } 
    else 
    { 
     cur.moveToNext(); 
    tv.setText(""+cur.getString(0)); 

    } 
break; 
case R.id.back: 
{ 
    if(cur.isFirst()) 
    { 
     cur.moveToLast(); 
     tv.setText(""+cur.getString(0)); 
    } 
    else {cur.moveToPrevious(); 
    tv.setText(""+cur.getString(0)); 
    } 
    break; 
} 
case R.id.LL_Card: 
{ 
    Intent i=new Intent(this,FlashCard_back.class); 
    startActivity(i); 
} 
} 
} 
} 

Другая сторона, которая загруженная:

import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.View.OnClickListener; 
    import android.widget.LinearLayout; 
    import android.widget.TextView; 
    public class FlashCard_back extends Activity implements OnClickListener{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_back); 
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardRear); 
    layMain.setOnClickListener(this); 
    } 
    public void onClick(View v) { 
    Intent i=new Intent(this,FlipCard.class); 
    startActivity(i); 
    } 
    } 

Я хочу, чтобы, когда я Filp обратно я должен получить ту же самую карту awith значений, извлеченных из базы данных. Просьба помочь.

ответ

0

и можно использовать ViewFlipper перевернуть экран display.for что делать следующим образом в одном файле XML,

<ViewFlipper> 
    <LinearLayout> 
      //front page's elements 
    </LinearLayout> 

    <LinearLayout> 
     //back page's elements 
    </LinearLayout> 
</ViewFlipper> 
+0

Awesome! Получил это так просто! :) Благодаря тонну. – Maxsteel

0

С видами нет другого способа, кроме как сохранить данные перед флип. Вы можете сохранить данные в sharedpreference или в простых переменных. Но вот как вы это сделаете.

0

В вашей второй деятельности, а не вызывать:

public void onClick(View v) { 
    Intent i=new Intent(this,FlipCard.class); 
    startActivity(i); 
} 

Попробуйте вместо :

public void onClick(View v) { 
    finish(); 
} 
Смежные вопросы