• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

How to use a Button/Link from an Alert Dialog Box?

So I have a simple project that has a button, and when clicked an Alert Dialog Box is supposed to open with a link to a site.

My problem is, that when the button is clicked the app crashes, and a null object reference error is given (the null reference is the link).

When the same code is used for the main activity, the link works as intended.

I'm sure it's some simple solution, but I'm a novice at android dev., so any help would be greatly appreciated.

Java:
public class MainActivity extends AppCompatActivity {

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

        setupPopup();

    }

    private void setupPopup() {

        ImageView btn = findViewById(R.id.btnShowDialog);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentManager manager = getSupportFragmentManager();
                PopupFragment dialog = new PopupFragment();
                dialog.show(manager, "MessageDialog");
            }
        });

    }

}

Java:
public class PopupFragment extends AppCompatDialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        View v = LayoutInflater.from(getActivity())
                .inflate(R.layout.info_popup, null);

        final TextView link = getActivity().findViewById(R.id.linkText);
        link.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                link.setMovementMethod(LinkMovementMethod.getInstance());
            }
        });

        return new AlertDialog.Builder(getActivity())
                .setView(v)
                .create();
    }
}

Will provide the xml files if needed.
 
Please show the stack trace from the Logcat view.

Sorry, took me a bit to get back to the project, but here it is..

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.test.test.PopupFragment.onCreateDialog(PopupFragment.java:21)
at android.support.v4.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:310)
at android.support.v4.app.Fragment.performGetLayoutInflater(Fragment.java:1231)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 
Upvote 0

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones