简体   繁体   English

当我在另一个Acitvity时如何完成活动

[英]How to finish the Activity when I was in Another Acitvity

When I m using shared preference class as a separated class, I'm going to check the user already login or not in the navigation activity class, if it is first time then it transfer me in the login activity otherwise continue in the navigation activity 当我使用共享首选项类作为一个单独的类时,我将检查用户是否已经登录导航活动类,如果是第一次,那么它会在登录活动中转移我,否则继续导航活动

But my problem is that when I'm going to backPressed on login activity it should close the app but it transfer me in the navigation activity....pls help me... 但我的问题是,当我要回复登录活动时,它应该关闭应用程序,但它会在导航活动中转移我....请帮助我...

package com.apkglobal.no_dues;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

public class Shared {
    SharedPreferences sp;
    SharedPreferences.Editor ed;
    String Filename="himanshu";
    int mode=0;
    Context context;
    String First="first";


public Shared(Context context) {
    this.context = context;
   sp=context.getSharedPreferences(Filename,mode);
    ed=sp.edit();
}


public void secondtime()
{
    ed.putBoolean(First,true);
    ed.commit();
}

public boolean firsttime()
{
    if(!this.isfirst())
    {
        Intent i=new Intent(context,LoginActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);

    }
    return false;
}

public boolean isfirst() {
    return sp.getBoolean(First,false);
}

public void getback()
{
    ed.putBoolean(First,false);
    ed.commit();
}


}

Navigationacitivity.class Navigationacitivity.class

package com.apkglobal.no_dues;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.TextView;

import com.apkglobal.no_dues.Fragment.AboutFragment;
import com.apkglobal.no_dues.Fragment.BookDetailsFragment;
import com.apkglobal.no_dues.Fragment.FeedbackFragment;
import com.apkglobal.no_dues.Fragment.HomeFragment;
import com.apkglobal.no_dues.Fragment.MarksFragment;
import com.apkglobal.no_dues.Fragment.NoDuesFormFragment;

public class NavigationActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener{
    Button btn_mis,btn_attendence;
    Shared shared;
    String rollno;
    SharedPreferences sp;
    SharedPreferences.Editor ed;

    NavigationView navigationView;

    TextView tv_rollno;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        shared = new Shared(getApplicationContext());
        shared.firsttime();

        setContentView(R.layout.activity_navigation);

        btn_attendence = (Button) findViewById(R.id.btn_attendence);
        btn_mis=(Button)findViewById(R.id.btn_mis);
        tv_rollno = (TextView)findViewById(R.id.tv_rollno);

        navigationView = (NavigationView) findViewById(R.id.nav_view);

        View header=navigationView.getHeaderView(0);

        tv_rollno = (TextView)header.findViewById(R.id.tv_rollno);



        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);





       sp=getSharedPreferences("rajput",MODE_PRIVATE);
         rollno=sp.getString("rollno",null);


         tv_rollno.setText(rollno);





        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

              navigationView.setNavigationItemSelectedListener(this);




        defaultSelectitem(R.id.nav_homepage);



    }






    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);

        }

         else {


            AlertDialog.Builder ab = new AlertDialog.Builder(NavigationActivity.this);
            ab.setIcon(R.drawable.logo);
            ab.setTitle("Exit Application");
            ab.setMessage("Are You Sure ?");
            ab.setCancelable(false);
            ab.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            });
            ab.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            ab.create();
            ab.show();
        }


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.navigation, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            Intent i = new Intent(getApplicationContext(), SettingActivity.class);
            startActivity(i);
        } else if (id == R.id.action_contact) {
            Intent i = new Intent(getApplicationContext(), ContactActivity.class);
            startActivity(i);
        } else if (id == R.id.action_search) {

        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        defaultSelectitem(item.getItemId());


        return true;
    }


    private void defaultSelectitem(int itemId) {

        Fragment fragment = null;

        switch (itemId) {
            case R.id.nav_homepage:
                fragment = new HomeFragment();
                break;

            case R.id.nav_nodues_form:
                fragment = new NoDuesFormFragment();
                break;

            case R.id.nav_feedback:
                fragment = new FeedbackFragment();
                break;

            case R.id.nav_marks:
                fragment = new MarksFragment();
                break;

            case R.id.nav_book:
                fragment = new BookDetailsFragment();
                break;

            case R.id.nav_about:
                fragment = new AboutFragment();
                break;

            case R.id.nav_fees_detail:

                            Intent intent = new Intent(NavigationActivity.this,FeesDetail.class);
             startActivity(intent);


                break;

            case R.id.nav_share:

                break;

            case R.id.nav_logout:
                shared.getback();
                Intent i = new Intent(getApplicationContext(), LoginActivity.class);
                startActivity(i);

                finish();

                break;
        }

        if (fragment != null) {
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment);
            fragmentTransaction.commit();

        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);

    }


}

Add android:noHistory=true in your Manifest.xml for LoginActivity . 在您的Manifest.xmlLoginActivity添加android:noHistory=true With that the Login Activity will not be on the backstack. 因此,登录活动不会在后台堆栈上。

Just add finish() to finish current activity : 只需添加finish()即可完成当前活动:

if(!this.isfirst()){
    Intent i=new Intent(context,LoginActivity.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
    finish()
}

You have to take Activity as a param instead of context. 您必须将Activity作为参数而不是上下文。 Then after starting the activity, you should finish the current activity. 然后在开始活动后,您应该完成当前活动。

Your code should be like this. 你的代码应该是这样的。

package com.apkglobal.no_dues;

import android.content.Intent;
import android.content.SharedPreferences;

public class Shared {
    SharedPreferences sp;
    SharedPreferences.Editor ed;
    String Filename="himanshu";
    int mode=0;
    Activity activity;
    String First="first";


public Shared(Activity activity) {
    this.activity= context;
   sp=activity.getSharedPreferences(Filename,mode);
    ed=sp.edit();
}


public void secondtime()
{
    ed.putBoolean(First,true);
    ed.commit();
}

public boolean firsttime()
{
    if(!this.isfirst())
    {
        Intent i=new Intent(activity,LoginActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        activity.startActivity(i);
        activity.finish();

    }
    return false;
}

public boolean isfirst() {
    return sp.getBoolean(First,false);
}

public void getback()
{
    ed.putBoolean(First,false);
    ed.commit();
}


}

Hope it helps:) 希望能帮助到你:)

use NavigationActivity.this instead of getApplicationContext()

shared = new Shared(NavigationActivity.this);
shared.firsttime();

and call finish(); method after startActivity();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM