0

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

Код

private Spinner spinner; 
private SharedPreferences favTeam; 
//private SharedPreferences.Editor editor; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    /* 
    if (favTeam.contains("team") && favTeam != null) { 
     Intent intent = new Intent(this, MyTeamActivity.class); 
     startActivity(intent); 
    } else { 
     System.out.println("-------- cant read from shared pref -----------"); 
    } 

*/ 


    spinner = (Spinner) findViewById(R.id.selectTeam); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.teams_array, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 

} 


public void submitMyTeam(View v){ 
    favTeam = this.getSharedPreferences("com.lonerganonline.league_of_ireland", Context.MODE_PRIVATE); 
    //SharedPreferences favTeam = this.getSharedPreferences("com.lonerganonline.league_of_ireland", Context.MODE_PRIVATE); 
    TextView txt = (TextView) findViewById(R.id.textView); 
    String selectedTeam = spinner.getSelectedItem().toString(); 

    SharedPreferences.Editor editor = favTeam.edit(); 
    editor.putString("team", selectedTeam); 
    editor.apply(); 
    Intent intent = new Intent(this, MyTeamActivity.class); 

    txt.setText(favTeam.getString("team","Not Defined")); 

    startActivity(intent); 

} 

я пытался сделать это с помощью комментируемого, если заявление в приведенном выше коде, но это привело к фатальным ошибкам. любая помощь будет принята с благодарностью.

ответ

2

Потому что вы пытаетесь прочитать значения от favTeam без его инициализации. почему он не работает, и вы получаете NullPointerException.

Вы должны инициализировать favteam ShardePreference перед чтением значений из него,

использованием

favTeam = this.getSharedPreferences("com.lonerganonline.league_of_ireland", Context.MODE_PRIVATE); 

в onCreate() Так что ваш код выглядеть,

favTeam = this.getSharedPreferences("com.lonerganonline.league_of_ireland", Context.MODE_PRIVATE); 

    if (favTeam.contains("team") && favTeam != null) { 
     Intent intent = new Intent(this, MyTeamActivity.class); 
     startActivity(intent); 
    } else { 
     System.out.println("-------- cant read from shared pref -----------"); 
    } 

Если вы все еще получаете ошибки, то опубликовать сообщение об ошибке журнал.

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