5
我的類應該將一個參數傳遞給DialogFragment,但是我的應用程序在onCreate方法(對話框類)內發生NullPointerException異常。代碼 對話片段類部分:DialogFragment參數和空指針異常
public class ConfirmDialog extends DialogFragment {
public ConfirmDialog() {}
ConfirmDialog newInstance(String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
file = getArguments().getString("FILE_NAME");
}
我在這一行的空指針:
file = getArguments().getString("FILE_NAME");
而且我不知道爲什麼。 我也粘貼代碼調用對話框
private void showConfirmDialog(String file) {
FragmentManager fm = getSupportFragmentManager();
ConfirmDialog dialog = new ConfirmDialog();
Log.i("SHOWFILEACTIVITY", file);
dialog.newInstance(file);
dialog.show(fm, "fragment_confirm_dialog");
}
這裏的「文件」的字符串不是空的,我已經與
Log.i("SHOWFILEACTIVITY", file);
好的謝謝,它的工作原理。我從來沒有使用newInstance函數,我犯了一個錯誤! 但爲什麼newInstance應該是靜態的? – giozh 2013-03-17 17:47:24
@giozh因爲我們想創建一個Dialog的'new'實例,這是一個糟糕的設計方法來依賴已經創建的* Dialog實例。保持靜態方法可以消除依賴關係,並減少對象的創建。 – 2013-03-17 17:51:42