2013-07-01 3 views
0

У меня есть объект File, называемый currentFile. Когда currentFile был изменен, и пользователь попытается открыть новый файл без сохранения, сначала появится диалоговое окно «Сохранить», и если «Да» нажата, будет сохранен текущий файл. Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю новое действие и нажимаю кнопку Android назад, currentFile имеет значение null, поэтому изменение файла, попытка открытия нового приводит к исключению NullPointerException. Как я могу сохранить текущую текущую активность?Как я могу сохранить переменную через действия?

+0

Можете ли вы опубликовать какой-то код, сообщения, подобные этим, как правило, проголосовали. – yams

+0

Также вы можете использовать статическую переменную. – yams

+0

Да, я просто не уверен, что мне нужно вставить. Gimme a sec – RapsFan1981

ответ

3

Там в несколько способов сделать это, в зависимости от того, что вы хотите вы должны поставить на баланс, что лучше для ваших потребностей, один из способов является использование дополнительных услуг, чтобы передать значение переменной в другой деятельности

Bundle extras = new Bundle(); 
extras.putString(key, value); 
Intent intent = new Intent("your.activity"); 
intent.putExtras(extras); 
startActivity(intent); 

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

YorApplicationClass app = (YorApplicationClass)getApplication(); 
app.getYourVariable(); 

И последнее я могу думать использует SharedPreferences, хранения переменных в виде пар ключ/значение, которые могут быть использованы для любой деятельности ...

  SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
      Editor edit = pref.edit(); 
      edit.putString(key, value); 
      edit.commit(); 

      //Any activity 
      SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
      pref.getString(key, defValue); 

С уважением!

+0

Спасибо! расширение класса Application является новым для меня, поэтому изучение этого стало для меня еще одним шагом вперед. – RapsFan1981

+0

Отлично, не забудьте объявить его в теге приложения манифеста, чтобы получить правильную ссылку ... С уважением –

0

Вы можете сделать это, используя Intents & Extras.

String yourFileName = "path/to/your/file"; 
Intent intent = new Intent(currentActivity, newActivity.class); 
intent.putExtra("FileName", yourFileName); 
startActivity(intent); 

Тогда в вашей новой деятельности:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String file = extras.getString("FileName"); 
} 

Вот некоторые чтения на Intents: http://developer.android.com/reference/android/content/Intent.html

+0

Я использую это для кнопки возврата приложения, но у меня возникла проблема с кнопкой назад Android, если пользователь использует кнопку «Назад» Android, а не мою кнопку. – RapsFan1981

0

Вы также могли бы сделать это с помощью Application класса. Мне легче работать, чем использовать пакеты и намерения.

Чтобы получить доступ к классу приложений, просто позвоните getApplicationContext в какой-либо деятельности, и приведения его к вашему типу класса, который проходит Application следующим образом:

public class MyActivity extends Activity{ 

    public void onCreate(Bundle bundle){ 
     MyApplicationClass app = (MyApplicationClass)this.getApplication(); 
    } 
} 
Смежные вопросы