2014-02-03 3 views
-3

Здесь я пытаюсь вызвать метод setText, но мое приложение терпит крах из-за некоторой проблемы с инициализацией.Мое приложение потерпело крах из-за не инициализации представления

EditText edittext; 
    SharedPreferences settings; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     image =(ImageView) findViewById(R.id.imageView1); 
     image.setImageResource(R.drawable.logo); 
     settings= getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); 
     if(settings.contains("sharedString")){ 
     String returnString=settings.getString("sharedString","Couldn't load the data"); 
     edittext.setText(returnString); 
     } 

    } 
+5

Отладка не работает, просто думая. Отправьте свой LogCat. –

+3

, где вы инициализируете 'edittext' перед вызовом метода edittext.setText'? –

+0

@ ρяσѕρєя: Упакуйте это в ответ, и я поднимусь. –

ответ

2

edittext не инициализирован. Инициализировать его в onCreate.

В onCreate у вас есть

edittext.setText(returnString); // not initialized in onCreate 

Вы

edittext =(EditText)findViewById(R.id.edit_message); // initialized in sendMessage 

в sendMessage. Таким образом, вы можете быть настройки текста EditText даже до инициализации

+4

Eagle eye catch :) –

+0

@PareshMayani спасибо. – Raghunandan

+0

это сработало .. Спасибо! :) – user3141544

0

Пожалуйста, попробуйте ввести код.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    image =(ImageView) findViewById(R.id.imageView1); 
    image.setImageResource(R.drawable.logo); 
    edittext = (EditText)findViewById(R.id.edittext);   
    settings= getBaseContext().getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putString("sharedString", "Shared Preference Data"); 
    editor.commit(); 
    String returnString=settings.getString("sharedString","Couldn't load the data"); 
    edittext.setText(returnString); 
} 

Прежде чем использовать код, сначала ознакомьтесь с разделом «Общие» и их примерами.

SharedPreference

SharedPreferences Example

Надеется, что это должно работать. Пожалуйста, дайте мне знать. Если это не работает, скажите мне, что вы хотите делать на самом деле.

+0

yeas sir, я объявлял переменную настроек как общедоступную. И вы говорите об объявлении ее как локальной. действительно ли это имеет значение – user3141544

+0

Нет, вы добавили код в качестве настроек = getSharedPreferences (PREFS_NAME, Context.MODE_PRIVATE); вместо настроек = getBaseContext(). getSharedPreferences (PREFS_NAME, Context.MODE_PRIVATE); Я не знаю, что вы создали edittext или нет. Но вы пытаетесь установить текст как edittext.setText (returnString); Если вы не создали, edittext означает создание EditText edittext = (EditText) findViewById (R.id.edittext); и затем edittext.setText (returnString); – Jeba

+0

Я загрузил полный код. Пожалуйста, проверьте это.! – user3141544

0

сво очень распространенная ошибка .. я должен инициализировать EditText перед вызовом метода на него

EditText = (EditText) findViewById (R.id .edit_message);

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