在简单的活动之间导航

5 android

你好

无花果

我想知道这个概念是如何在android中实现的

  • 此应用程序中的导航是这样进行的:

Activity1- -- to- - -> Activity 2- -to - -.>Activity 3 - - to - -> Activity2

但是在这样做时::

我将数据从

Activity1 - -> Activity 2- -> 我没有从 Activity2 传递数据 - - > Activity3

现在

如果我导航回 Activity2- - 从 - - Activity3

  • 应用程序关闭,因为 Activity2 正在等待 Activity3 中不存在的数据
  • 我怎样才能克服这个问题,我怎样才能在从 Activity3 导航回来之前保留 Activity 2 的状态(甚至数据)

周期必须是 ::

Activity1- -- to- - -> Activity 2- -to - -.>Activity 3 - - to - -> Activity2


  • 如何实现这一目标?
  • 我需要寻找什么概念

我希望我的描述很清楚


我提供了一个示例程序来支持我的问题

如何修改代码以实现此目的

主活动.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity1);

        Button BTN=(Button) findViewById(R.id.activity3button3);
        BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
        Intent INT=new Intent(MainActivity.this,Activity2.class);
                INT.putExtra("hi", "HI");
                startActivity(INT);     
            }
        }); 
    }

 }
Run Code Online (Sandbox Code Playgroud)

Activity2.java

public class Activity2 extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);



        Button BTN=(Button) findViewById(R.id.activity3button3);

        BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent INT=new Intent(Activity2.this,Activity3.class);
                startActivity(INT);

            }
        });

    }



}
Run Code Online (Sandbox Code Playgroud)

Activity3.java

public class Activity3 extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity3);

        Button BTN=(Button) findViewById(R.id.activity3button3);

        BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent INT=new Intent(Activity3.this,Activity2.class);
                startActivity(INT);
            }
        });



    }



}
Run Code Online (Sandbox Code Playgroud)

Har*_*ran 2

也许这会有所帮助

你有R.layout.activity1R.layout.activity2因为R.layout.activity3你需要为所有活动提供单独的按钮,但你为所有活动提供了R.id.activity3button3一个按钮,所以最好为三个活动创建三个按钮

Button BTN=(Button) findViewById(R.id.activity1button1);
        BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                     Intent ide = new Intent(MainActivity.this,Activity2.class);
                     ide .putExtra("hi", "HI");
                 ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     startActivity(ide);
            }
        }); 



  Button BTN=(Button) findViewById(R.id.activity2butto2);
            BTN.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                         Intent ide = new Intent(Acitvity2.this,Acitvity3.class);
                         ide .putExtra("hi", "HI");
                         ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                         startActivity(ide);
                }
            }); 

Button BTN=(Button) findViewById(R.id.activity3button3);
        BTN.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                     Intent ide = new Intent(Acitvity3.this,Acitvity2.class);
                     ide .putExtra("hi", "HI");
                 ide.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                     startActivity(ide);
            }
        }); 
Run Code Online (Sandbox Code Playgroud)