2015-01-27 3 views
0

У меня есть 3 экрана, экран 1, 2 экрана, экран 3.Назад Навигация в Android Без ActionBar

Это вид задней навигации, которые я реализую,

экран 3 -> Экран 2 - > экран 1.

Вот мой код ниже для экрана 1

public class Screen1 extends Activity implements OnClickListener{ 
    Button button1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     button1 = (Button)findViewById(R.id.button1); 
button1.setOnClickListener(this); 
    } 

@Override 
    public void onClick(View v) { 

     switch(v.getId()) 
     { 
// This is where the intent starts to display the second Screen 
     case R.id.button1: 
      Intent started = new Intent(Screen1.this,Screen2.class); 
      startActivity(started); 
      break; 
} 
} 
} 

экран 2

public class Screen2 extends Activity implements OnTouchListener{ 
ListView displaylist; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.screen2); 

// Please ignore this part of the code it just displays the list of items 

    displaylist = (ListView)findViewById(R.id.listView1); 

    String[] listofitems = {"A","B","C","W"}; 

    ArrayAdapter<String> lists = new ArrayAdapter<String>(Screen2.this, android.R.layout.simple_list_item_1, listofitems); 

    displaylist.setAdapter(lists); 

    displaylist.setOnTouchListener(this); 
} 

// This is where the intent starts to display the Third Screen 
@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 

    Intent started2= new Intent(Screen2.this,Screen3.class); 
    startActivity(started2); 
    return true; 
} 
} 

Экран 3

public class Screen3 extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // Displays some layout 
    } 

} 

Моя нынешняя проблема

Моя текущая проблема заключается в том, что задняя навигация (при нажатии кнопки назад) в следующем порядке

Screen3 -> Screen3 -> Screen2 -> Screen1

Мой вопрос

Почему экран 3 отображается снова, когда я нажимаю кнопку «Назад»? Это что-то похожее на ошибку?

С подобной questionDavid Wasser comment говорит, что

If your navigation is standard, then 1 starts 2 and the BACK button goes back to 1. 2 starts 3 and the BACK button goes back to 2. You don't need to do anything special to get this 

Тестирование устройства

Android Emulator

API: 19

Примечание: Я не хочу, чтобы это сделать с панелью действий

ответ

2

Я думаю, это потому, что ваше событие onTouch запускается дважды при нажатии и отпускании.

Попробуйте это, или использовать другое событие:

public boolean onTouch(View v, MotionEvent event) 
{ 
switch(event.getAction()){ 
case MotionEvent.ACTION_DOWN: 
    Intent started2= new Intent(Screen2.this,Screen3.class); 
    startActivity(started2); 
    break; 

case MotionEvent.ACTION_MOVE: 
    // touch move code 
    break; 

case MotionEvent.ACTION_UP: 
    // touch up code 
    break; 
} 
return true; 
} 
+0

'использовать некоторые другие event' Каковы другие события? –

+0

http://stackoverflow.com/questions/9097723/adding-a-onclicklistener-to-listview-android – Benten