2015-04-23 2 views
0

Выполнено выполнение следующего кода. Нет сообщений об ошибках.Сила приложения Android закрыта при запуске

Он должен открыть Web.java при нажатии кнопки и создает значение ключа.

MainActivity.java

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    private Button btnGo; 
    final Spinner page = (Spinner)findViewById(R.id.txtPage); 
    String pageChoice; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final SharedPreferences sharedPref =PreferenceManager.getDefaultSharedPreferences(this); 
     btnGo = (Button)findViewById(R.id.btnGo); 
     btnGo.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       pageChoice = page.getSelectedItem().toString(); 

       //Hopefully will allow for "global" url setting. 
       SharedPreferences.Editor editor = sharedPref.edit(); 
       editor.putString("key1", pageChoice); 
       editor.commit(); 
       startActivity(new Intent(MainActivity.this, Web.class)); 
      } 
     }); 
    } 
} 

ответ

1

Это не предполагают, чтобы быть в переменных класса:

final Spinner page = (Spinner)findViewById(R.id.txtPage);

Эта потребность быть внутри onCreate() метода. После setContentView() в качестве переменной метода.

findViewById() Используйте контекст для поиска в представлении, и для этого необходимо иметь контекст (и ресурс компоновки необходимо раздувать). Вы получаете контекст только в onCreate исполнении, а не при загрузке класса.

+0

Спасибо! Я очень ценю это! Это исправило это! –

1

Положите final Spinner page = (Spinner)findViewById(R.id.txtPage); после setContentView(R.layout.activity_main); Постулаты

findViewById (int id)

Посмотрите на вид ребенка с заданным идентификатором. Если это представление имеет данный идентификатор , верните это представление. Таким образом, при загрузке класса он ищет Spinner с идентификатором txtPage, но его нет. поэтому вы получаете нулевое значение. Которым вы пытаетесь получить доступ к результату метода OnClick, является NPE.

+0

Спасибо за помощь! –