我已經看過了這個新手android問題的stackoverflow的答案,但我不明白什麼是最佳的解決方案。爲什麼「findViewById」在android的oncreate方法中返回null?
我想創建一個簡單的活動(帶片段),它有幾個文本字段和一個按鈕。當按鈕被按下時,我想按鈕做些事情!
所以我有我的mainActivity類,以及它的代碼片段。我正在嘗試將「onClickListener」正確設置爲我的按鈕對象。
當我在活動本身的「onCreate」方法中這樣做時,它會拋出一個nullpointerexception - 我猜這是因爲按鈕本身還沒有創建。然而,將這些代碼放入OnStart方法會導致它被反覆調用,看起來不合適。
所以我將它移動到「佔位符片段」 - 它不再被報告爲空,但我不能使用意圖導航到另一個頁面(因爲其他頁面不是靜態的,我不能引用當前活動使用「this」)。
我很堅持,它看起來很簡單。
方案1:嘗試啓動它在OnCreate方法(:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_made_my_day);
////////////////////// PROBLEM IS HERE //////////////////////////////////
Button butLogin = (Button) findViewById(R.id.but_login);
butLogin.setOnClickListener(butLogin_OnClickListener);
///////////
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
第2版 - 碎片代碼,也不起作用:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_made_my_day, container, false);
Button butLogin = (Button) rootView.findViewById(R.id.but_login);
butLogin.setOnClickListener(butLogin_OnClickListener);
return rootView;
}
發佈片段代碼,特別是關於您無法使用的意圖的部分 – panini
現在發佈代碼片段,這不是重複的,因爲我在發佈之前閱讀了其他類似的有關stackoverflow的問題 – rockit
注意:關於引用問題在這個線程之上 - 它建議將代碼移動到「onCreateView」部分 - 我已經完成了,而且我仍然有問題。這不是重複的 – rockit