【问题标题】:Saving state while changing back and forth to a view来回更改视图时保存状态
【发布时间】:2012-04-28 19:06:35
【问题描述】:

我正在编写一个应用程序,它本质上是一张可以翻转的卡片。双方都有某些相关数据,一边说提示,另一边说图片。数据的双方都是相关的。我的问题是我可以浏览卡片通过单击下一步,但是当我翻转卡片以获取图片时,由于重新加载了第一个活动,我回到了开头。我该如何解决这个问题?我的代码是: 包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);
     }
     }

我希望当我退回时,我应该得到同一张卡片,其中包含从数据库中提取的值。 请帮忙。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      对于视图,除了在翻转之前保存数据之外别无他法。您可以将数据保存在共享首选项或普通变量中。但这就是你要这样做的方式。

      【讨论】:

        【解决方案3】:

        在您的第二个活动中而不是调用:

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

        试试这个:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多