如何使用简历按钮进入上一个活动?

时间:2016-07-27 09:37:17

标签: java android android-studio android-intent android-studio-2.0

我的应用程序工作正常,但我的目的是当我关闭应用程序然后再次运行它时,我的应用程序在最后一个活动打开。我想当我再次打开主要活动变成显示,如果我点击简历然后上一个活动打开。所以我有Activity名为Main Activity (my main)p1p2p3

主要活动:

public class MainActivity extends Activity {



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



        Button resume=(Button)findViewById(R.id.resume);
        Button next=(Button)findViewById(R.id.next);
        Button exit=(Button)findViewById(R.id.exit);

        resume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (!isTaskRoot()
                        && getIntent().hasCategory(Intent.CATEGORY_LAUNCHER)
                        && getIntent().getAction() != null
                        && getIntent().getAction().equals(Intent.ACTION_MAIN)) {

                    finish();
                    return;
                }


            }
        });

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, p1.class);
                startActivity(intent);
          }
      });

        exit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                moveTaskToBack(true);
                android.os.Process.killProcess(android.os.Process.myPid());
                System.exit(1);

            }
        });


    }
}

XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:text="resume"
        android:layout_width="wrap_content"
        android:id="@+id/resume"
        android:layout_height="wrap_content" />

    <Button
        android:text="next"
        android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/exit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="exit"/>
</LinearLayout>

P1:

public class p1 extends AppCompatActivity {

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

        Button next = (Button) findViewById(R.id.next);
        Button home=(Button)findViewById(R.id.home);

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(p1.this,p2.class);
                startActivity(intent);

            }
        });

        home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(p1.this,MainActivity.class);
                startActivity(intent);

            }
        });

        }
    }

p1 XML布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:text="next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/next"/>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="page 1"/>
    <Button
        android:text="go in main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/home"/>

</LinearLayout>

和p2,p3如p1

例如:当我在p2然后点击进入主要和主要点击退出并重新运行我的应用程序,我的应用程序在p2中打开我想要当我重新运行应用程序主要活动打开如果我点击简历然后p2来表示。

3 个答案:

答案 0 :(得分:2)

要在重新启动时打开主要活动,请致电

private void FinishActivity(){
this.finish();
}
startActivity(intent);

之后的onClick事件中

用于恢复您的活动将当前活动类存储为String到共享首选项

moveTaskToBack(true);

之前在代码中调用以下方法
    private void storeCurrentActivity(){ 
        SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF",            Context.MODE_PRIVATE); 
        SharedPreferences.Editor editor = myPref.edit(); 
        editor.clear(); 
        String packageName = this.getPackageName(); 
        String className = this.getClass().getSimpleName(); 
        editor.putString("lastactivity",packageName+"."+className); 
        editor.commit(); 
}

并将结果存储到共享首选项

当你回到你的应用程序时,只需检查SharedPreference

setContentView(R.layout.main_page);

之后的主要活动中使用以下代码
String lastActivity= getLastActivity();
try {
            Intent fooActivity = new Intent(this,Class.forName(lastActivity))
            startActivity(fooActivity)
    } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

将此方法放在MainActivity中

   private String getLastActivity(){
                  SharedPreferences myPref = =   getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
                  String lastActivity= myPref.getString("lastactivity","");

        }

这可能会对你有所帮助

解决方案针对此特定问题

用以下代码替换您的主页按钮操作

home.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(p1.this,MainActivity.class);
                startActivity(intent);
                storeCurrentActivity();
                this.finish();

            }
        });

以上代码将存储您的活动,即如果您处于活动p1,则会将p1存储为最后一个活动

请删除onResume操作

答案 1 :(得分:0)

我将使用Clifford的回复为您提出解决方案,因为您无法理解他的答案,尽管我很清楚。

上述方法会将活动存储在SharedPreferences

private void storeCurrentActivity(){
             SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
             SharedPreferences.Editor editor = myPref.edit();
             editor.putString("lastactivity",this.getClass().getSimpleName());
             editor.commit();
}

使用此方法并在每个Activity中的所有onResume中调用他,但Main:

除外
    @Override
    public void onResume(){
        super.onResume();
        storeCurrentActivity();
    }

在简历按钮中,只需拨打上次保存的活动

即可
resume.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SharedPreferences myPref = getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
        String lastActivity= myPref.getString("lastactivity","");
        try {
            Intent fooActivity = new Intent(this,Class.forName(lastActivity))
            startActivity(fooActivity)
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
    }
 });

答案 2 :(得分:0)

经过一番尝试后,这是我对问题的回答 主要活动:

 public class MainActivity extends Activity {


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



    Button resume = (Button) findViewById(R.id.resume);
    Button next = (Button) findViewById(R.id.next);
    Button exit = (Button) findViewById(R.id.exit);


    resume.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String lastActivity= getLastActivity();

            try {
                if(!lastActivity.equals(""))
                {
                    Toast.makeText(getApplicationContext(),"previous activity :"+lastActivity, Toast.LENGTH_SHORT).show();
                    Intent fooActivity = new Intent(MainActivity.this,Class.forName(lastActivity));
                    startActivity(fooActivity);
                    MainActivity.this.finish();

                } else {
                    Toast.makeText(getApplicationContext(),"no previous activity !", Toast.LENGTH_SHORT).show();
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }




        }
    });
    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, p1.class);
            startActivity(intent);
        }
    });

    exit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    });
}
private String getLastActivity(){
    SharedPreferences myPref =    getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
    String lastActivity= myPref.getString("lastactivity","");

    return lastActivity;
}


}

p1,p2,p3:

public class p1 extends Activity {

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

            Button next = (Button) findViewById(R.id.next);
            Button home=(Button)findViewById(R.id.home);

            next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent intent = new Intent(p1.this, p2.class);
                    startActivity(intent);

                }
            });

            home.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent intent=new Intent(p1.this,MainActivity.class);
                    storeCurrentActivity();
                    startActivity(intent);
                    p1.this.finish();


                }
            });

    }
        private void storeCurrentActivity(){
            SharedPreferences myPref =getSharedPreferences("APP_SHARED_PREF", Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = myPref.edit();
            editor.clear();
            String packageName = this.getPackageName();
            String className = this.getClass().getSimpleName();
            editor.putString("lastactivity",packageName+"."+className);
            editor.commit();
        }


    }