How to retrieve current user id and put into a fragment
I'm make a account fragment, so I want to retrieve name and image data, but it make my apps force close:
This is my account fragment:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}this is my error log
11-13 21:35:56.045 15465-15465/? E/AndroidRuntime: FATAL EXCEPTION:
main
Process: com.example.hpprobook.blogapp, PID: 15465
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hpprobook.blogapp/com.example.hpprobook.blogapp.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at com.example.hpprobook.blogapp.AccountFragment.getUser(AccountFragment.java:68)
at com.example.hpprobook.blogapp.AccountFragment.onCreateView(AccountFragment.java:62)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at com.example.hpprobook.blogapp.MainActivity.onStart(MainActivity.java:116)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249)
at android.app.Activity.performStart(Activity.java:6874)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
which is here
getUser();
and here
user_id = firebaseAuth.getCurrentUser().getUid();
this is my mainActivity
import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}it shows some error too in here
super.onStart();
I'm sorry because my English is not good, and I am also a new user in this forum, I think I need to be guided.
java
add a comment |
I'm make a account fragment, so I want to retrieve name and image data, but it make my apps force close:
This is my account fragment:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}this is my error log
11-13 21:35:56.045 15465-15465/? E/AndroidRuntime: FATAL EXCEPTION:
main
Process: com.example.hpprobook.blogapp, PID: 15465
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hpprobook.blogapp/com.example.hpprobook.blogapp.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at com.example.hpprobook.blogapp.AccountFragment.getUser(AccountFragment.java:68)
at com.example.hpprobook.blogapp.AccountFragment.onCreateView(AccountFragment.java:62)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at com.example.hpprobook.blogapp.MainActivity.onStart(MainActivity.java:116)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249)
at android.app.Activity.performStart(Activity.java:6874)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
which is here
getUser();
and here
user_id = firebaseAuth.getCurrentUser().getUid();
this is my mainActivity
import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}it shows some error too in here
super.onStart();
I'm sorry because my English is not good, and I am also a new user in this forum, I think I need to be guided.
java
post whole error log
– Augusto
Nov 13 '18 at 14:33
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
Your problem is that the Firebase reference is null:com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.
– Augusto
Nov 13 '18 at 14:44
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15
add a comment |
I'm make a account fragment, so I want to retrieve name and image data, but it make my apps force close:
This is my account fragment:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}this is my error log
11-13 21:35:56.045 15465-15465/? E/AndroidRuntime: FATAL EXCEPTION:
main
Process: com.example.hpprobook.blogapp, PID: 15465
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hpprobook.blogapp/com.example.hpprobook.blogapp.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at com.example.hpprobook.blogapp.AccountFragment.getUser(AccountFragment.java:68)
at com.example.hpprobook.blogapp.AccountFragment.onCreateView(AccountFragment.java:62)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at com.example.hpprobook.blogapp.MainActivity.onStart(MainActivity.java:116)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249)
at android.app.Activity.performStart(Activity.java:6874)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
which is here
getUser();
and here
user_id = firebaseAuth.getCurrentUser().getUid();
this is my mainActivity
import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}it shows some error too in here
super.onStart();
I'm sorry because my English is not good, and I am also a new user in this forum, I think I need to be guided.
java
I'm make a account fragment, so I want to retrieve name and image data, but it make my apps force close:
This is my account fragment:
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}this is my error log
11-13 21:35:56.045 15465-15465/? E/AndroidRuntime: FATAL EXCEPTION:
main
Process: com.example.hpprobook.blogapp, PID: 15465
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hpprobook.blogapp/com.example.hpprobook.blogapp.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2744)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.auth.FirebaseUser
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null
object reference
at com.example.hpprobook.blogapp.AccountFragment.getUser(AccountFragment.java:68)
at com.example.hpprobook.blogapp.AccountFragment.onCreateView(AccountFragment.java:62)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2346)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1428)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1759)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2596)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2383)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2338)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2245)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3248)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3200)
at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:195)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:597)
at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177)
at com.example.hpprobook.blogapp.MainActivity.onStart(MainActivity.java:116)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1249)
at android.app.Activity.performStart(Activity.java:6874)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2805)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1538)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:165)
at android.app.ActivityThread.main(ActivityThread.java:6354)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
which is here
getUser();
and here
user_id = firebaseAuth.getCurrentUser().getUid();
this is my mainActivity
import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}it shows some error too in here
super.onStart();
I'm sorry because my English is not good, and I am also a new user in this forum, I think I need to be guided.
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.nfc.Tag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Inflater;
import de.hdodenhof.circleimageview.CircleImageView;
import static android.support.constraint.Constraints.TAG;
/**
* A simple {@link Fragment} subclass.
*/
public class AccountFragment extends Fragment {
private StorageReference storageReference;
private FirebaseAuth firebaseAuth;
private FirebaseFirestore firebaseFirestore;
private Uri mainImageURI = null;
private String user_id;
private TextView accountName;
private CircleImageView accountImage;
public AccountFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_account, container, false);
getUser();
return view;
}
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = firebaseAuth.getCurrentUser().getUid();
accountName = getView().findViewById(R.id.account_name);
accountImage = getView().findViewById(R.id.account_image);
firebaseFirestore.collection("Users").document(user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
String name = task.getResult().getString("name");
String image = task.getResult().getString("image");
mainImageURI = Uri.parse(image);
accountName.setText(name);
RequestOptions placeholderRequest = new RequestOptions();
placeholderRequest.placeholder(R.drawable.person);
Glide.with(AccountFragment.this).setDefaultRequestOptions(placeholderRequest).load(image).into(accountImage);
}
} else {
String error = task.getException().getMessage();
Toast.makeText(getContext(), "(FIRESTORE Retrieve Error) : " + error, Toast.LENGTH_LONG).show();
}
}
});
}
}import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}import android.content.Intent;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity {
private Toolbar mainToolbar;
private FirebaseAuth mAuth;
private FirebaseFirestore firebaseFirestore;
private String current_user_id;
private FloatingActionButton addPostBtn;
private BottomNavigationView mainbottomNav;
private HomeFragment homeFragment;
private NotificationFragment notificationFragment;
private AccountFragment accountFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
firebaseFirestore = FirebaseFirestore.getInstance();
mainToolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(mainToolbar);
getSupportActionBar().setTitle("PhotoGram");
if (mAuth.getCurrentUser() != null) {
mainbottomNav = findViewById(R.id.mainbottom_nav);
// FRAGMENTS
homeFragment = new HomeFragment();
notificationFragment = new NotificationFragment();
accountFragment = new AccountFragment();
initializeFragment();
mainbottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.main_container);
switch (item.getItemId()) {
case R.id.bottom_home_btn:
replaceFragment(homeFragment, currentFragment);
return true;
case R.id.bottom_account_btn:
replaceFragment(accountFragment, currentFragment);
return true;
case R.id.bottom_notification_btn:
replaceFragment(notificationFragment, currentFragment);
return true;
default:
return false;
}
}
});
addPostBtn = findViewById(R.id.add_post_btn);
addPostBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newPostIntent = new Intent(MainActivity.this, NewPostActivity.class);
startActivity(newPostIntent);
}
});
}
}
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if (currentUser == null) {
sendToLogin();
} else {
current_user_id = mAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users").document(current_user_id).get().addOnCompleteListener(new OnCompleteListener < DocumentSnapshot > () {
@Override
public void onComplete(@NonNull Task < DocumentSnapshot > task) {
if (task.isSuccessful()) {
if (!task.getResult().exists()) {
Intent setupIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(setupIntent);
finish();
}
} else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error : " + errorMessage, Toast.LENGTH_LONG).show();
}
}
});
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_logout_btn:
logOut();
return true;
case R.id.action_setting_btn:
Intent settingsIntent = new Intent(MainActivity.this, SetupActivity.class);
startActivity(settingsIntent);
return true;
default:
return false;
}
}
private void logOut() {
mAuth.signOut();
sendToLogin();
}
private void sendToLogin() {
Intent loginIntent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
finish();
}
private void initializeFragment() {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, homeFragment);
fragmentTransaction.add(R.id.main_container, notificationFragment);
fragmentTransaction.add(R.id.main_container, accountFragment);
fragmentTransaction.hide(notificationFragment);
fragmentTransaction.hide(accountFragment);
fragmentTransaction.commit();
}
private void replaceFragment(Fragment fragment, Fragment currentFragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
if (fragment == homeFragment) {
fragmentTransaction.hide(accountFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == accountFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(notificationFragment);
}
if (fragment == notificationFragment) {
fragmentTransaction.hide(homeFragment);
fragmentTransaction.hide(accountFragment);
}
fragmentTransaction.show(fragment);
//fragmentTransaction.replace(R.id.main_container, fragment);
fragmentTransaction.commit();
}
}java
java
edited Nov 13 '18 at 16:51
Alex Mamo
40k72759
40k72759
asked Nov 13 '18 at 14:21
Sheva AthallaSheva Athalla
61
61
post whole error log
– Augusto
Nov 13 '18 at 14:33
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
Your problem is that the Firebase reference is null:com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.
– Augusto
Nov 13 '18 at 14:44
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15
add a comment |
post whole error log
– Augusto
Nov 13 '18 at 14:33
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
Your problem is that the Firebase reference is null:com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.
– Augusto
Nov 13 '18 at 14:44
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15
post whole error log
– Augusto
Nov 13 '18 at 14:33
post whole error log
– Augusto
Nov 13 '18 at 14:33
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
Your problem is that the Firebase reference is null:
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.– Augusto
Nov 13 '18 at 14:44
Your problem is that the Firebase reference is null:
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.– Augusto
Nov 13 '18 at 14:44
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15
add a comment |
2 Answers
2
active
oldest
votes
Apparentely you is using the not instancied variable to get data.
Try change the to it:
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = currentUser.getUid();
....
}
The error is sayingFirebaseAuth.getInstanceis returning null, though
– cricket_007
Nov 13 '18 at 15:15
1
There is no way to achieve this, sinceFirebaseUserclass doesn't have agetCurrentUser()method.
– Alex Mamo
Nov 13 '18 at 16:22
add a comment |
Tol get the uid of the user, simply use the following lines of code:
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid(); //Do what you need to do with your uid
}
It's also important to check the firebaseUser for nullity.
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53283129%2fhow-to-retrieve-current-user-id-and-put-into-a-fragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Apparentely you is using the not instancied variable to get data.
Try change the to it:
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = currentUser.getUid();
....
}
The error is sayingFirebaseAuth.getInstanceis returning null, though
– cricket_007
Nov 13 '18 at 15:15
1
There is no way to achieve this, sinceFirebaseUserclass doesn't have agetCurrentUser()method.
– Alex Mamo
Nov 13 '18 at 16:22
add a comment |
Apparentely you is using the not instancied variable to get data.
Try change the to it:
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = currentUser.getUid();
....
}
The error is sayingFirebaseAuth.getInstanceis returning null, though
– cricket_007
Nov 13 '18 at 15:15
1
There is no way to achieve this, sinceFirebaseUserclass doesn't have agetCurrentUser()method.
– Alex Mamo
Nov 13 '18 at 16:22
add a comment |
Apparentely you is using the not instancied variable to get data.
Try change the to it:
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = currentUser.getUid();
....
}
Apparentely you is using the not instancied variable to get data.
Try change the to it:
protected void getUser() {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
user_id = currentUser.getUid();
....
}
edited Nov 13 '18 at 16:23
answered Nov 13 '18 at 15:06
AugustoAugusto
455519
455519
The error is sayingFirebaseAuth.getInstanceis returning null, though
– cricket_007
Nov 13 '18 at 15:15
1
There is no way to achieve this, sinceFirebaseUserclass doesn't have agetCurrentUser()method.
– Alex Mamo
Nov 13 '18 at 16:22
add a comment |
The error is sayingFirebaseAuth.getInstanceis returning null, though
– cricket_007
Nov 13 '18 at 15:15
1
There is no way to achieve this, sinceFirebaseUserclass doesn't have agetCurrentUser()method.
– Alex Mamo
Nov 13 '18 at 16:22
The error is saying
FirebaseAuth.getInstance is returning null, though– cricket_007
Nov 13 '18 at 15:15
The error is saying
FirebaseAuth.getInstance is returning null, though– cricket_007
Nov 13 '18 at 15:15
1
1
There is no way to achieve this, since
FirebaseUser class doesn't have a getCurrentUser() method.– Alex Mamo
Nov 13 '18 at 16:22
There is no way to achieve this, since
FirebaseUser class doesn't have a getCurrentUser() method.– Alex Mamo
Nov 13 '18 at 16:22
add a comment |
Tol get the uid of the user, simply use the following lines of code:
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid(); //Do what you need to do with your uid
}
It's also important to check the firebaseUser for nullity.
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
add a comment |
Tol get the uid of the user, simply use the following lines of code:
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid(); //Do what you need to do with your uid
}
It's also important to check the firebaseUser for nullity.
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
add a comment |
Tol get the uid of the user, simply use the following lines of code:
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid(); //Do what you need to do with your uid
}
It's also important to check the firebaseUser for nullity.
Tol get the uid of the user, simply use the following lines of code:
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
String uid = firebaseUser.getUid(); //Do what you need to do with your uid
}
It's also important to check the firebaseUser for nullity.
answered Nov 13 '18 at 16:21
Alex MamoAlex Mamo
40k72759
40k72759
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
add a comment |
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
Hi Sheva! Have you tried my solution above, does it work?
– Alex Mamo
Nov 14 '18 at 8:44
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53283129%2fhow-to-retrieve-current-user-id-and-put-into-a-fragment%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
post whole error log
– Augusto
Nov 13 '18 at 14:33
sorry i dont understand your word so i copied all of them :) @Augusto
– Sheva Athalla
Nov 13 '18 at 14:39
Your problem is that the Firebase reference is null:
com.google.firebase.auth.FirebaseAuth.getCurrentUser()' on a null object reference. Please, post all code and all class to help us found the problem.– Augusto
Nov 13 '18 at 14:44
then what should i do? @Augusto
– Sheva Athalla
Nov 13 '18 at 14:54
I would suggest moving all the Activity login stuff to onCreate and remove onStart
– cricket_007
Nov 13 '18 at 15:15