2016-03-01 39 views
-1

當我從其他佈局中投射元素時,出現此錯誤。顯示java.lang.NullPointerException:通過打開Android活動中的NullPointerException

final Spinner mainIng = (Spinner) findViewById(R.id.spinner); 
final EditText sub1 = (EditText) findViewById(R.id.sub1); 
final EditText sub2 = (EditText) findViewById(R.id.sub2); 
final EditText sub3 = (EditText) findViewById(R.id.sub3); 
final EditText sub4 = (EditText) findViewById(R.id.sub4); 
final EditText sub5 = (EditText) findViewById(R.id.sub5); 
final EditText sub6 = (EditText) findViewById(R.id.sub6); 

繼承人我錯誤

引起試圖調用虛擬方法 'android.view.View android.view.Window.findViewById(INT)' 上的 空對象引用

+0

你在'Activity'裏面運行這個嗎? – giannisf

+0

不,它位於我的活動被調用之前。我希望它是一個全局變量。 – Jellolicious

+0

這段代碼中缺少大量的代碼來準確回答問題。如果它不是太大,你可以發佈整個類和方法聲明嗎?至少整個方法和它所包含的類是有幫助的。 – Bobbake4

回答

0

將您的代碼放在您的活動中的 setContentView之後。

如果您希望它們在您的活動的每種方法中都可用,請將它們聲明爲字段。

public class MyActivity extends Activity { 
     Spinner mySpiner; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout); 

     mySpiner = (Spinner) findViewById(R.id.mySpiner); 

然後實例化它們之後。

+0

好的,非常感謝你,先生:) – Jellolicious

+0

@Jellolicious如果幫助你,請接受答案。謝謝 – giannisf

0

您需要初始化意見onCreate()

public class YourActivity extends Activity { 
Spinner mainIng; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_activity_xml); 
    mainIng= (Spinner) findViewById(R.id.spinner); 
} 
1

你是從onCreate()調用這個嗎?如果是,請嘗試將其移動到onCreateView(),並使用虛擬視圖調用它,或者稍後再調用它。

如果你這樣做然後findViewById將無法正常工作,因爲該窗口尚未創建。

findViewById() returns null when I call it in onCreate()