2010-08-19 3 views
3

В моем приложении для Android у меня есть три страницы A, B, C. На всех трех страницах есть табличный макет. Если пользователь нажимает на определенную строку, отображает другую страницу, связанную с этой строкой. Теперь, что мне нужно, если человек нажимает на спину после второй страницы, мне нужно сфокусировать строку, которую он нажал на первой странице по возвращении. Могу ли я сделать это в android Пожалуйста, ответьте на ваши ценные предложения.Keycode back press in 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

Есть много способов сделать это. Я предполагаю, что A, B, C и страница для запуска (D) - это все действия. Вы можете сохранить выделение, например, в действии B, в переменной-члене перед запуском вспомогательной операции D (например, в onPause()) и восстановить фокус, когда управление вернется к B onResume(). Или вы можете указать параметр D в дополнительных целях намерения или параметр requestCode до startActivityForResult() и вернуть такое же значение из D по номеру setResult(), которое вы получите в .

onPause вызывается автоматически, когда действие останавливается, и часто это место, где вы хотите что-то сохранить, прежде чем отказаться от контроля. Это происходит после того, как вы начали активность D, но до того, как она будет перенесена на передний план. Вам нужно только реализовать функцию в вашей деятельности:

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

Хотя, это, вероятно, имеет смысл сохранить щелкнул строку сразу в OnClick или onItemSelected события в строке и, или там, где вы начинаете суб деятельности.

onResume также вызывается автоматически при возврате из вспомогательного действия, все, что вам нужно сделать, это реализовать его.

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

Я очень новый android.Could вам просьба представить с какой-то пример кода, как, как я могу cahieve это с помощью OnPause() OnResume() – Remmyabhavan

+0

Отредактированный ответ на примере. – DonSteep

+0

Thanks.Now. Я могу сфокусировать щелкнув строку. Но опять-таки возникает проблема, например, если человек перешел со страницы А на Б, щелкнув по какой-то четвертой строке. Если он нажимает на клавишу «назад», он может просматривать страницу с Четвёртая строка подсвечена. Но если человек нажимает на 3-ю строку, которая в настоящее время не сосредоточена, тогда сначала нажмите, чтобы выделить строку, и пользователю нужно щелкнуть, если ему нужно перейти на другую страницу. Короче говоря, требуется 2 клика, если пользователь хочет перемещаться с использованием непоследовательной строки. Я обновляю свой вопрос с помощью своего кода. Пожалуйста, дайте мне знать ваши ценные предложения. Заранее спасибо :) – Remmyabhavan

4

Вы можете попробовать это

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

      { 
      //Your code here 
      } 
    }