0

I am having a problem where in the Fragment the "getString()" says "Method invocation 'getString' may produce 'NullPointerException'" that's the only problem. The Fragment is stored in MainActivity in Navigation Window.

LoginActivity (Where MainActivity is getting the Data):

private void LoginMethod(String email, String password) { StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener() { @Override public void onResponse(String response) { try { JSONObject jsonObject = new JSONObject(response); String result = jsonObject.getString("success"); JSONArray jsonArray = jsonObject.getJSONArray("login"); if (result.equals("1")){

                for (int i = 0; i < jsonArray.length(); i++){

                    JSONObject object = jsonArray.getJSONObject(i);
                    String username = object.getString("Username").trim();
                    String email = object.getString("Email").trim();

                    Toast.makeText(Login.this, "Login Success: " + username, Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Login.this, MainActivity.class);

                    intent.putExtra("username", username);
                    intent.putExtra("email", email);
                    startActivity(intent);

                }
            }
            else if (result.equals("0")) {
                Toast.makeText(Login.this, "Login Failed" + result + response, Toast.LENGTH_LONG).show();                    Log.e("JSON Error", response);
                Log.e("Login Error", result);
            }
        }
        catch (JSONException e){
            Toast.makeText(Login.this, e.getMessage(), Toast.LENGTH_LONG).show();
            Log.e("JSON Error", response);

        }
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(Login.this, error.getMessage(), Toast.LENGTH_SHORT).show();
    }
})
{
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> params = new HashMap<>();
        params.put("Email", email);
        params.put("Password", password);
        return params;
    }
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);

}



**MainActivity:** 
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    Toolbar toolbar;
    TextView getemail, getusername;
    DrawerLayout drawerLayout;
    NavigationView navigationView;
    View navheader;

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

        Log.i("State","onCreate");

        toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        drawerLayout = findViewById(R.id.drawerLayout);
        navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        navheader = navigationView.getHeaderView(0);

        String getUsername = getIntent().getStringExtra("username");
        String getEmail = getIntent().getStringExtra("email");

        getusername = navheader.findViewById(R.id.getusername);
        getemail = navheader.findViewById(R.id.getemail);

        toolbar.setTitle(getUsername);
        getusername.setText(getUsername);
        getemail.setText(getEmail);

        ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar,
                R.string.nav_drawer_open, R.string.nav_drawer_close);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);
        actionBarDrawerToggle.syncState();

        if (savedInstanceState == null){
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new Home()).commit();
            navigationView.setCheckedItem(R.id.home);
        }
    }

    public void getAccountFragmentData(){

        String test = "akshdasjkdhsajkdasdas";
        String test2 = "wadahawawaawaww";
        Bundle bundle = new Bundle();
        bundle.putString("username", test);
        bundle.putString("email", test2);
        Account account = new Account();
        account.setArguments(bundle);
        Toast.makeText(this, "Account", Toast.LENGTH_SHORT).show();
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.home:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new Home()).commit();
                break;
            case R.id.orderfood:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new FoodOrder()).commit();
                break;
            case R.id.account:
                getAccountFragmentData();
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new Account()).commit();
                break;
            case R.id.settings:
                getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                        new Settings()).commit();
                break;
            case R.id.email:
                Toast.makeText(this, "Email", Toast.LENGTH_SHORT).show();
                break;
            case R.id.share:
                Toast.makeText(this, "Share", Toast.LENGTH_SHORT).show();
                break;

        }
        drawerLayout.closeDrawer(GravityCompat.START);
        return true;
    }

    @Override
    public void onBackPressed() {
        if (drawerLayout.isDrawerOpen(GravityCompat.START)){
            drawerLayout.closeDrawer(GravityCompat.START);
        }
        else {
            super.onBackPressed();
        }
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i("State","onStart");

    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i("State","onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i("State","onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i("State","onStop");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i("State","onRestart");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i("State","onDestroy");
    }
}

**Fragment: **

public class Account extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v = inflater.inflate(R.layout.fragment_account, container, false);

        TextView getUsername = v.findViewById(R.id.username);
        TextView getEmail = v.findViewById(R.id.email);

        Bundle bundle = this.getArguments();

            String setUsername = bundle.getString("username");
            String setEmail = bundle.getString("email");

            getUsername.setText(setUsername);
            getEmail.setText(setEmail);

            Log.i("Data Sent", "Sent");
        return v;
    }




I want the Fragment to get the data from MainActivity.

0 Answers0