Remmyabhavan
Remmyabhavan

Reputation: 1719

Keycode back press in android

In my android application , i have three pages A,B,C.All the three pages have table layout.If i person clicks on a particular row other page related to that row will display. Now what i require is if a person clicks on back after the second page,I need to focus the row which he had clicked in the first page on his return. Can i do this in android Please reply your valuable suggestions.

My code after Totramonhave suggested is.

Here in amy code i am generating rows dynamically.

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();        

     }

Thanks in advance :)

Upvotes: 4

Views: 9750

Answers (2)

DonSteep
DonSteep

Reputation: 1075

There are many ways to do this. I assume A, B, C and the page to start (D) are all Activities. You could store the selection, say in activity B, in a member variable before starting the sub activity D (for example in onPause()), and restore focus when control returns to B's onResume(). Or you could give the parameter to D in the intent's extras, or the requestCode parameter to startActivityForResult() and return the same value from D by a call to setResult(), which you'll receive to B's onActivityResult().

onPause is called automatically when an Activity halts, and is often the place where you want to save something before giving up control. This happens after you have started activity D, but before it is brought to front. You only need to implement the function in your activity:

public void onPause() {
  // set the member variable somehow
  super.onPause();
}

Although, it probably makes more sense to save the clicked row immediately in the row's onClick or onItemSelected event, or wherever you start the sub activity.

onResume is also called automatically when returning from the sub activity, all you need to do is implement it.

public void onResume() {
  requestFocus(mSavedRow);
  super.onResume();
}

Upvotes: 0

DeRagan
DeRagan

Reputation: 22920

You can try this

public boolean onKeyDown(int keyCode, KeyEvent event) 
{       
  if(keyCode==KeyEvent.KEYCODE_BACK)

          {
            //Your code here
          }
    }

Upvotes: 5

Related Questions