2016-01-22 46 views
0

我对Android很陌生。我正在实现一个小型的android应用程序。它有3页。onBackPressed从Android的一个页面的两个单独的页面

页A

网页B

C页

有在A页按钮和网页B可以转到页C.我需要知道的是,当我转到网页C通过点击网页上的按钮,我需要使用onBackPressed()回到页A,当我转到C页点击页面B键,我需要使用onBackPressed()

这里回到页面B是我使用的代码。

@Override 
    public void onBackPressed() 
    { 
     super.onBackPressed(); 
     startActivity(new Intent(C.this, A.class)); 
     finish(); 

    } 

据我所知,我不能在同一类中调用两个onBackPressed()

那么,我该怎么办?

  • 编辑 -

启动活动C来自A/B

btnFromC.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), C.class); 
       finish(); 
       startActivity(intent); 
      } 
     }); 
+0

我不确定你遇到的问题。如果你删除了onBackPressed()方法,你应该有这个预期的功能。 'A - >按下按钮 - > C - >后退按钮 - > A'。这是标准功能。如果通过“页面”,你的意思是一个“活动”。 – Knossos

+0

如何从页面A或B启动C Intent,因为@ Knossos的正常行为是将其添加到backStack。 –

+0

是的,页面的意思是我需要的是A - >按下按钮 - > C - >后退按 - > A和B - >按下按钮 - > C - >后退按钮 - > B –

回答

1

试试这个,是不是最好的答案,但它的工作原理:

活动答:

btnFromC.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), C.class); 
       intent.putExtra("comeFrom", 0); 
       startActivity(intent); 
      } 
     }); 

活动B:

btnFromC.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(getApplicationContext(), C.class); 
       intent.putExtra("comeFrom", 1); 
       startActivity(intent); 
      } 
     }); 

活动C:

int comeFrom; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = this.getIntent(); 
     comeFrom = intent.getIntExtra("comeFrom", 0); 
} 

@Override 
    public void onBackPressed() 
    { 
     super.onBackPressed(); 
    Intent intent = null; 

     switch(comeFrom){ 
     case 0: 
     intent = new Intent(getApplicationContext(), A.class); 
     break; 
     case 1: 
     intent = new Intent(getApplicationContext(), B.class); 
     break; 
     } 
     startActivity(intent); 

    } 

解决你的问题?

+0

哇。这是grt。谢谢 :) –

-2

从活动A和B出发赛这样的:

startActivity(new Intent(A or B.this, c.class)); 

,并在C类

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed();   
    finish(); 

} 
相关问题