prat3ik-patel
prat3ik-patel

Reputation: 1215

Open activity on button click in NavigationDrawer

I have created project in Android Studio with Navigation Drawer Activity and I have successfully created it,On navigation drawer activity I have created 3 section, In 1st section I put Button and I want to setOnClickListener method on that button which lead to start new Activity (ex. "xyz.class") I have used code

startActivity(new Intent(this,xyz.class));

but "this" keyword is not working and gives me error. So, I changed code like

Context c; startActivity(new Intent(c,xyz.class));

which gives NullPointerException,

My Section1 code is

import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.example.pratik.crm50.R;
import com.gc.materialdesign.views.ButtonFloat;
public class Dashboard extends Fragment implements View.OnClickListener {
    View rootView;
    Context c;
    private ButtonFloat float_btn;
    private Button but;
    private Button btn;
    Context c;
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
        View v;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            v = inflater.inflate(R.layout.dashboard_layout,container, false);
        } else {
            v = super.onCreateView(inflater,container, savedInstanceState);
        }
      View vv=v.findViewById(R.id.button_simple);
        vv.setOnClickListener(this);
        return v;
    }
    @Override
    public void onClick(View v) {
       // Toast.makeText(c,"Float Button",Toast.LENGTH_SHORT).show();
        Log.e("ssas","sasafa");
        //startActivity(new Intent(c,xyz.class));
    }

}

and I can get successfully log Log.e("ssas","sasafa") on above code. So how to do this?

Upvotes: 0

Views: 624

Answers (2)

Sebastian Walla
Sebastian Walla

Reputation: 1124

You get a NullPointerException, because you´re never assining a value to Context c. So as user3249477 also mentioned use the method getActivity() to assign a value to c like c=getActivity(); Or call it directly while starting the Intent. This would look like this: startActivity(new Intent(getActivity(),xyz.class));

Upvotes: 1

Simas
Simas

Reputation: 44128

Fragment does not extend Context while the Intent constructor expects the first parameter to be exactly that.

The Context c variable is redundant because a Fragment saves the parent activity by default.

You need to use the activity (class that extends Context) that the fragment is attached to:

startActivity(new Intent(getActivity(), xyz.class));

Upvotes: 1

Related Questions