在来回切换视图时保存状态

时间:2012-04-28 19:06:35

标签: android android-layout android-intent android-emulator

我正在写一个基本上是可以翻转的卡的应用程序。双方都有一些相关数据说明一边提示,另一边有图片。数据的两面都是相关的。我的问题是我可以浏览卡片通过单击下一步,但当我翻转卡片的图片时,我回到开头,因为第一个活动重新加载。我怎么能解决这个问题?我的代码是: 包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);
     }
     }

我希望当我回复时,我应该从数据库中获取相同的卡片值。 请帮忙。

3 个答案:

答案 0 :(得分:0)

使用视图除了在翻转之前保存数据之外别无他法。您可以将数据保存在共享首选项或纯变量中。但这就是你要做的。

答案 1 :(得分:0)

你可以使用ViewFlipper来翻转屏幕显示。为了在单个xml文件中执行以下操作,

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

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

答案 2 :(得分:0)

在你的第二个活动中,而不是打电话:

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

请改为尝试:

public void onClick(View v) {
    finish();
}