2016-09-11 2 views
1

* MISE À JOUR! A propos de ce lien - Android close app on back button - J'ai essayé le code des réponses, mais rien ne change. Je pense que mon problème est dans l'activité A. Lorsque l'utilisateur ouvre mon application, l'activité A vérifie-t-il une valeur dans les préférences. Si la valeur est manquante, l'activité A ne renvoie pas l'utilisateur à l'activité B. Si la valeur est présente Activité A renvoie l'utilisateur à l'activité B. Il s'agit donc d'un cercle vicieux: L'utilisateur ouvre mon application ---> Il passe à l'activité A ---> Activité A vérifie la valeur dans les préférences ---> Activité A renvoie l'utilisateur à l'activité B ---> Lorsque l'utilisateur clique sur le bouton précédent, l'activité A est en cours d'ouverture ---> Activité A renvoie l'utilisateur à l'activité B --- > et ainsi de suiteMon activité redémarre lorsque j'appuie sur le bouton Retour

S'il vous plaît aidez-moi à résoudre mon problème)


J'ai deux activités - a et B. Activité a ont un bouton, quand je clique dessus, il me référer à les paramètres. Mais si c'est une valeur dans les paramètres, l'activité A me renvoie à l'activité B en utilisant l'intention. L'activité B est une activité avec du contenu, et lorsque j'appuie sur le bouton de retour, l'activité B redémarre. Mais je veux fermer l'application, lorsque le bouton de retour est cliqué. Comment je peux faire ça?

Mon code:

AActivity.java:

public class AActivityextends AppCompatActivity implements View.OnClickListener { 

Button btn_select; 
SharedPreferences sp; 

/** 
* Called when the activity is first created. 
*/ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_a); 
    btn_select = (Button) findViewById(R.id.btn_select); 
    sp = PreferenceManager.getDefaultSharedPreferences(this); 
    String select_class = sp.getString("select_class", ""); 
    if (select_class.equals("") || select_class.equals("0")) { 
     btn_select.setVisibility(View.VISIBLE); 
    } 
} 

protected void onResume() { 
    String select_class = sp.getString("select_class", ""); 
    tvInfo.setText(select_class); 
    if (select_class.equals("") || select_class.equals("0")) { 
     btn_select.setVisibility(View.VISIBLE); 
    } else { 
     btn_select.setVisibility(View.INVISIBLE); 
     Intent intent = new Intent(this, BActivity.class); 
     startActivity(intent); 
    } 
    super.onResume(); 
} 

}

BActivity.java:

public class BActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 
SharedPreferences sp; 

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

    sp = PreferenceManager.getDefaultSharedPreferences(this); 
    String select_class = sp.getString("select_class", ""); 

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

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new MondayFragment(), "ПН"); 
    adapter.addFragment(new TuesdayFragment(), "ВТ"); 
    adapter.addFragment(new WednesdayFragment(), "СР"); 
    adapter.addFragment(new ThursdayFragment(), "ЧТ"); 
    adapter.addFragment(new FridayFragment(), "ПТ"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu, 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 intent = new Intent(BActivity.this, SettingsActivity.class); 
     intent.putExtra("fwflag","from_menu_item"); 
     startActivity(intent); 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

Mon AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.x.x"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name"> 
    <activity android:name=".AActivity" 
     android:theme="@style/MyMaterialTheme"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".SettingsActivity" 
     android:theme="@style/MyMTheme.Base" /> 
    <activity android:name=".BActivity" 
     android:theme="@style/MyMTheme"> 
    </activity> 
</application> 

Mon activité Code C:

public class CActivity extends AppCompatActivity { 

Toolbar toolbar; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.toolbar); 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    //toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    toolbar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 

    }); 
    getFragmentManager().beginTransaction().replace(R.id.fragment_container, 
      new PrefFragment()).commit(); 
} 

public class PrefFragment extends PreferenceFragment 
{ 
    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.pref); 
     Intent intent = getIntent(); 
     String flag_from_where = intent.getStringExtra("fwflag"); 
     if (flag_from_where.equals("from_btn_select")) { 
      PreferenceScreen main = (PreferenceScreen) findPreference(getString(R.string.pref_screen)); 
      main.onItemClick(null, null, 0, 0); 
     } else if (flag_from_where.equals("from_menu_item")) { 
     } 
     final ListPreference list = (ListPreference) getPreferenceScreen().findPreference("listpref"); 
     list.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       Intent intent = new Intent(CActivity.this, BActivity.class); 
       startActivity(intent); 
       finish(); 
       return true; 
      } 
     }); 
    } 

} 

}

+1

Téléchargez le code de votre AndroidManifest.xml s'il vous plaît! – Carlton

+0

J'ai fait cela. Vérifiez s'il vous plaît) –

+0

Donc, vous voulez quitter l'application complètement lorsque vous appuyez sur le bouton? – Carlton

Répondre

2

Vous devez "finir" chaque activité juste après que vous appelez pour commencer une nouvelle activité.

Donc, après chaque startActivity(intent), vous devriez ajouter finish() juste en dessous.

Cela devrait prendre soin de votre problème.