Question

I am trying to make a custom Loading Dialog.

public class LoadingDialogFragment extends DialogFragment {

String title = "";
String message = "";

public LoadingDialogFragment() {

}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    title = getArguments().getString("title");
    message = getArguments().getString("message");

    Dialog dialog = new Dialog(getActivity());
    View view = getView().findViewById(R.id.loading_dialog_view);
    dialog.setContentView(view);
    dialog.setCancelable(false);
    dialog.setTitle(title);

    return dialog;
}
}

and here is my xml file which I am trying to load:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loading_dialog_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:layout_gravity="center"/>

How ever I am getting an error when I try to get my view my application crashes.

I call this dialog fragment like so:

    public void showLoadingDialog(String title, String message) {
    loadingDialogFragment = new LoadingDialogFragment();
    Bundle args = new Bundle();
    args.putString("title", title);
    args.putString("message", message);
    loadingDialogFragment.setArguments(args);
    loadingDialogFragment.show(fragManager, "loadingDialog");
}

public void dismissLoadingDialog() {
    if (loadingDialogFragment != null) {
        loadingDialogFragment.dismiss();
    }
}

How can I set the content view of my Dialog in the DialogFragment?

ERROR:

04-02 21:07:49.156: E/AndroidRuntime(3390): FATAL EXCEPTION: main
04-02 21:07:49.156: E/AndroidRuntime(3390): java.lang.NullPointerException
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.example.rhino68mobileapp.ConnectingActivity.OnError(ConnectingActivity.java:96)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.example.rhino68mobileapp.ConnectingActivity$1.onFailure(ConnectingActivity.java:79)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.loopj.android.http.AsyncHttpResponseHandler.handleMessage(AsyncHttpResponseHandler.java:373)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.loopj.android.http.AsyncHttpResponseHandler$ResponderHandler.handleMessage(AsyncHttpResponseHandler.java:135)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at android.os.Looper.loop(Looper.java:137)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at java.lang.reflect.Method.invokeNative(Native Method)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at java.lang.reflect.Method.invoke(Method.java:511)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-02 21:07:49.156: E/AndroidRuntime(3390):     at dalvik.system.NativeStart.main(Native Method)
Was it helpful?

Solution 2

Change:

View view = getView().findViewById(R.id.loading_dialog_view);

with

View view = LayoutInflater.from(getActivity()).inflate(R.layout.nome_of_layout, null);

OTHER TIPS

override this method:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
          View view = inflater.inflate(R.layout.loading_dialog_view, container);
          //TODO your code here
}

Get the dialog created by the super method and set its content view

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Dialog dialog = super.onCreateDialog(savedInstanceState);

    View view = ...

    dialog.setContentView(view);
    return dialog;
}

Hope this helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top