2016-01-07 4 views
1

Я пытаюсь отправить одну строку через общие настройки другой активности. Я хочу снова вызвать ту же деятельность.Не удается правильно получить доступ к данным об общих предпочтениях

У меня есть несколько видов деятельности, которые называет одну общую деятельность. Поэтому я хочу определить, из которого была вызвана общая деятельность, и хочу вернуться к той же активности, с которой она вызвана.

Это я сделал в 1 Активность:

SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
    SharedPreferences.Editor editor = mPrefs.edit(); 
    editor.putString("gosend","1"); 
    editor.commit(); 

В 2-й активности

SharedPreferences mPrefs = getSharedPreferences("Type1", 0); 
    SharedPreferences.Editor editor = mPrefs.edit(); 
    editor.putString("goride", "2"); 
    editor.commit(); 

В общей активности

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


      SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
      activityType = mPrefs.getString("gosend", "1"); 

      SharedPreferences mPrefs1 = getSharedPreferences("Type1",0); 
      goride = mPrefs1.getString("goride","2"); 

      if(activityType.equals("1")) { 

       intent = new Intent(ChooseFromMapActivity.this, GoSend.class); 

       startActivity(intent); 
      } 

      if(goride.equals("2")) 
      { 
       intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class); 

       startActivity(intent); 
      } 

     } 
    }); 
} 

Теперь, когда я звоню общую деятельность с 1-ой деятельности, Я не вернусь назад к тому же, что и вторая деятельность вызвана.

что-то не так ???

Редактировать

Я попытался это: Тем не менее доза не работает

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


      SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
      activityType = mPrefs.getString("gosend", "0"); 

     // SharedPreferences mPrefs1 = getSharedPreferences("Type1",0); 
      // goride = mPrefs1.getString("goride","0"); 

      switch (activityType){ 

       case "0": 
       intent = new Intent(ChooseFromMapActivity.this, GoSend.class); 

       startActivity(intent); 
        break; 
       case "1": 

       intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class); 

       startActivity(intent); 
        break; 
      } 

      } 
+3

Ваш как 'if' заявления называются по одному, то почему вторая деятельность называют ... используйте 'if else' –

+1

вы можете использовать SharedPreferences mPrefs = getSharedPreferences (« Тип », 0); inb всех видов деятельности. и в общем использовании использования, если еще – Pavya

+0

Спасибо за ответ .. Я использовал еще, если .. этим я получаю 1-й вид деятельности, когда я звоню с первого раза, но со вторым действием также получаю первое действие. @ Sharp Edge –

ответ

0

вы вызываете же sharepreference при написании обоих файлов

нотные от 1 активности - >> SharedPreferences.Editor редактор = mPrefs.edit();

примечание от 2-го действия - >> SharedPreferences mPrefs = getSharedPreferences ("Type1", 0);

и в вашем общем виде ... -> SharedPreferences mPrefs = getSharedPreferences ("Type", 0); activityType = mPrefs.getString ("gosend", "1");

 SharedPreferences mPrefs1 = getSharedPreferences("Type1",0); 
     goride = mPrefs1.getString("goride","2"); 

вы имеете в виду тот же файл, как в вашем коде, но на самом деле, что вы пытаетесь сделать, это обратиться к 2 отдельно sharepreference ...

mPref & mPref1 ....

так, вы должны решить, использовать либо один, а не два ...

EDIT --- >> UPDATE CODE внушения.

в вашей деятельности 1

SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putString("gosend","1"); 
editor.commit(); 

в вашей деятельности 2

SharedPreferences mPrefs = getSharedPreferences("Type1", 0); 
SharedPreferences.Editor editor = mPrefs.edit(); 
editor.putString("gosend", "2"); 
editor.commit(); 

== >> убедитесь, что значения "gosend" являются один вы хотите. вы принимаете меры в отношении изменений, внесенных в «госенд», потому что в вашем коде вы хотели проверить значения «госсенда» и открывать разные действия на основе значений.

в вашей совместной деятельности

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

     SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
     activityType = mPrefs.getString("gosend", "0"); 

    // SharedPreferences mPrefs1 = getSharedPreferences("Type1",0); 
     // goride = mPrefs1.getString("goride","0"); 

     switch (activityType){ 

      case "0": 
       intent = new Intent(ChooseFromMapActivity.this, GoSend.class); 
       startActivity(intent); 
       break; 
      case "1": 
       intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class); 
       startActivity(intent); 
       break; 
     } 

    } 
} 

** удачи, надеюсь, что это поможет ..

+0

Мне не нужно устанавливать общие предпочтения в каждом действии? Не могли бы вы показать мне код, что не так? @Chim Ly –

+0

в вашем случае, могу ли я предложить вам использовать только один общий файл предпочтений для всех ваших действий, ссылаясь на один и тот же файл общих предпочтений каждый раз, когда вы хотите получить значения. и ДА, вам нужно будет объявить общие предпочтения в каждом действии, см. раздел «Общие настройки сохранения в паре значений», и вы можете поместить в него много ключевых пар значений и получить их по вашему желанию. –

+0

PLS внимательно смотрят на ваш код, вы имеете в виду «mPref» и «mPref1», что означает, что есть 2 файла настроек привилегий, и вот в чем проблема. альтернативно, вы также можете поместить его в качестве другого класса java (опция) –

0

Попробуйте следующий код в вашей совместной деятельности:

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


      SharedPreferences mPrefs = getSharedPreferences("Type", 0); 
      activityType = mPrefs.getString("gosend", "0"); 

      SharedPreferences mPrefs1 = getSharedPreferences("Type1",0); 
      goride = mPrefs1.getString("goride","0"); 

      if(activityType.equals("1")) { 

       intent = new Intent(ChooseFromMapActivity.this, GoSend.class); 

       startActivity(intent); 
      } 

      else if(goride.equals("2")) 
      { 
       intent = new Intent(ChooseFromMapActivity.this, GoRideActivity.class); 

       startActivity(intent); 
      } 

     } 
    }); 
} 

Позвольте мне знать, ваша проблема решена. Значение по умолчанию соответствует требуемому значению, поэтому каждый раз сначала, если утверждение станет истинным.

Надеюсь, это поможет.

+0

нет, когда я звоню из второго действия, он возвращается к первому. –

+0

Когда тип активности будет равен 1, а когда горид будет равен 2? – Kiran

Смежные вопросы