在我的Android应用程序中,我有三个页面A,B,C。所有三个页面都有表格布局。如果我点击一个特定的行,将显示与该行相关的其他页面。 现在我需要的是,如果一个人在第二页之后点击回来,我需要将他在返回时在第一页中点击的行集中。 我可以在android中执行此操作 请回复您宝贵的建议。
Totramonhave建议的代码是。
在amy代码中,我动态生成行。
public void onClick(View v) {
// TODO Auto-generated method stub
flag=v.getId();
if(v.getId()==1)
{
Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
startActivity(i);
}
if(v.getId()==3)
{
Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
startActivity(i);
}
if(v.getId()==5)
{
Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
startActivity(i);
}
if(v.getId()==7)
{
Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
startActivity(i);
}
if(v.getId()==100)
{
Intent i = new Intent(TableImageLayout.this, TableImageLayout3.class);
startActivity(i);
}
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus)
{
((TableRow)v).setBackgroundColor(Color.rgb(255, 180, 40));
}
else
{((TableRow)v).setBackgroundColor(Color.BLACK);}
}
protected void onResume() {
super.onResume();
tr[flag].requestFocus();
tr[flag].setFocusableInTouchMode(true);
if(tr[flag].hasFocus())
{
tr[flag].setBackgroundColor(Color.rgb(255, 180, 40));
}
else
{tr[flag].setBackgroundColor(Color.BLACK);}
}
@Override
public void onPause() {
super.onPause();
}
提前致谢:)
答案 0 :(得分:4)
你可以试试这个
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK)
{
//Your code here
}
}
答案 1 :(得分:0)
有很多方法可以做到这一点。我假设A,B,C和开始的页面(D)都是活动。您可以在启动子活动D之前将选择(例如活动B)存储在成员变量中(例如在onPause()
中),并在控制返回到B onResume()
时恢复焦点。或者您可以在intent的附加内容中将参数提供给D,或者将requestCode
参数提供给startActivityForResult()
,并通过调用setResult()
从D返回相同的值,您将收到该值B是onActivityResult()
。
onPause,并且通常是在放弃控制之前要保存某些内容的位置。这是在您开始活动D之后,但在它被带到前面之前发生的。您只需在活动中实现该功能:
public void onPause() {
// set the member variable somehow
super.onPause();
}
尽管如此,在行的onClick或onItemSelected事件中立即保存单击的行或者在您启动子活动的任何地方可能更有意义。
当从子活动返回时,也会自动调用onResume,您需要做的就是实现它。
public void onResume() {
requestFocus(mSavedRow);
super.onResume();
}