2015-04-23 24 views
0

執行下面的代碼時崩潰了。 沒有錯誤信息。執行Android app force時執行

在按下按鈕並創建鍵值時,它應該打開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); statment

findViewById (int id)

查找與給定id的子視圖。如果此視圖具有給定的 ID,則返回此視圖。所以,當類加載它尋找與txtPage id的微調,但它不在那裏。所以你得到空值。您想要在onClick方法結果中訪問的是NPE。

+0

感謝您的幫助! –