設定時にtextviewの値を設定するdatepickerを開発しようとしています。DialogFragmentのAndroid findViewById
しかし、私は、datepickerを処理するDialogFragmentからテレビを選択することはできません。
私はgetView()を試しましたが、特定のポイントでアプリケーションがクラッシュしました。
import java.util.Calendar;
import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.TextView;
@SuppressLint("NewApi")
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
TextView mTextView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// R.layout.my_layout - that's the layout where your textview is placed
View view = inflater.inflate(R.layout.activity_register_screen, container, false);
mTextView = (TextView) view.findViewById(R.id.tvDate);
// you can use your textview.
return view;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
int syear = year;
int smonth = month;
int sday = day;
// set selected date into textview
mTextView.setText(new StringBuilder().append(smonth + 1)
.append("-").append(sday).append("-").append(syear)
.append(" "));
}
}
おかげで、任意の助けが理解されるであろう。
は、ここに私のコードです。新しいコードと次のエラーで更新
:
04-15 09:45:30.880: E/AndroidRuntime(23016): FATAL EXCEPTION: main
04-15 09:45:30.880: E/AndroidRuntime(23016): android.util.AndroidRuntimeException: requestFeature() must be called before adding content
04-15 09:45:30.880: E/AndroidRuntime(23016): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:239)
04-15 09:45:30.880: E/AndroidRuntime(23016): at com.android.internal.app.AlertController.installContent(AlertController.java:236)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.AlertDialog.onCreate(AlertDialog.java:336)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.Dialog.dispatchOnCreate(Dialog.java:353)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.Dialog.show(Dialog.java:257)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.DialogFragment.onStart(DialogFragment.java:490)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.Fragment.performStart(Fragment.java:1537)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:866)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.BackStackRecord.run(BackStackRecord.java:622)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1386)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:430)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.os.Handler.handleCallback(Handler.java:605)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.os.Handler.dispatchMessage(Handler.java:92)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.os.Looper.loop(Looper.java:137)
04-15 09:45:30.880: E/AndroidRuntime(23016): at android.app.ActivityThread.main(ActivityThread.java:4517)
04-15 09:45:30.880: E/AndroidRuntime(23016): at java.lang.reflect.Method.invokeNative(Native Method)
04-15 09:45:30.880: E/AndroidRuntime(23016): at java.lang.reflect.Method.invoke(Method.java:511)
04-15 09:45:30.880: E/AndroidRuntime(23016): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
04-15 09:45:30.880: E/AndroidRuntime(23016): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
04-15 09:45:30.880: E/AndroidRuntime(23016): at dalvik.system.NativeStart.main(Native Method)
は、あなたがonCreateView()
を使用する必要がありフラグメント/フラグメントダイアログで特定のビューを取得するには
「tvDate」は別のフラグメントですか? – Sam
tvDateはアクティビティ内にあります –
このスレッドで私の答えを親切にチェックしてください。 http://stackoverflow.com/questions/16507016/findviewbyid-in-dialogfragment-nullpointerexception/29291399#29291399 乾杯! – noahutz