2017-11-04 15 views
0

clicking on the menu itemのアカウント設定ページにアクセスできません。アイテムをクリックすると、error messagesが私のログキャットに表示されます。私はこの問題を解決するためにさまざまなソリューションを試しましたが、残念ながら運はありません。Firebaseデータベースを使用して「アカウント設定」アクティビティを実行するにはどうすればよいですか?

これは私のdatabase structureです。

これは私のSettingsActivity.javaファイル

public class SettingsActivity extends AppCompatActivity { 

private DatabaseReference mUserDatabase; 
private FirebaseUser mCurrentUser; 

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

    String current_uid = mCurrentUser.getUid(); 
    //String current_uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); 

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser(); 

    mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid); 

    mUserDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Toast.makeText(SettingsActivity.this, dataSnapshot.toString(), Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
} 
} 

これは私のMainActivity.java

ユーザーは、 "アカウント設定" メニューをクリックし、この活動から
public class MainActivity extends AppCompatActivity { 

// Creating an instance of the FirebaseAuth object 
private FirebaseAuth mAuth; 

private Toolbar mToolbar; 

private ViewPager mViewPager; 

private SectionsPagerAdapter mSectionsPagerAdapter; 

private TabLayout mTabLayout; 



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

    // Initialize the object 
    mAuth = FirebaseAuth.getInstance(); 

    // Set the toolbar 
    mToolbar = (Toolbar) findViewById(R.id.main_Toolbar); 
    setSupportActionBar(mToolbar); // allows the toolbar to be displayed on the screen 
    getSupportActionBar().setTitle("Lapit Chat"); 

    // Tabs 
    mViewPager = (ViewPager) findViewById(R.id.main_tabPager); 
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    mViewPager.setAdapter(mSectionsPagerAdapter); 

    mTabLayout = (TabLayout) findViewById(R.id.mainTabs); 
    mTabLayout.setupWithViewPager(mViewPager); 


} 

@Override 
public void onStart() { 
    super.onStart(); 
    // get the current user logged in via Firebase and store it in the create variable 
    FirebaseUser currentUser = mAuth.getCurrentUser(); 

    // if there is no user 
    if (currentUser == null) { 
     // User is not signed in; show the start activity 
     sendToStart(); 
    } // if user is logged in, go straight to the main page 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    getMenuInflater().inflate(R.menu.main_menu, menu); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    super.onOptionsItemSelected(item); 
    // If the user clicks the logout button 
    if(item.getItemId() == R.id.menu_Logout) { 
     // Log the user out of the session 
     FirebaseAuth.getInstance().signOut(); 
     sendToStart(); 
    } 
    if(item.getItemId() == R.id.menu_Settings) { 
     Intent settingsIntent = new Intent(MainActivity.this, SettingsActivity.class); 
     startActivity(settingsIntent); 
    } 
    return true; 
} 

// Method to send the user back to the start page when logged out 
private void sendToStart() { 
    Intent startIntent = new Intent(MainActivity.this, StartActivity.class); 
    startActivity(startIntent); 
    finish(); // Prevents user from coming back to this page when clicking the back button 
} 
} 

、ですそれは私に許可されず、 "残念なことに停止しました"というダイアログボックスを表示します。エラーのスクリーンショットにはなぜそれが表示されますが、私が解決策を研究したにもかかわらずまだ理解していません。誰が私になぜこれが起こっているのか説明できますか?

ありがとうございました。

答えて

0

場所:下記String current_uid = mCurrentUser.getUid();

mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();

あなたgetUid()は前に現在のユーザーを検索する場合は、mCurrentUser変数はnullにしてNullPointerException

+0

感謝の原因になります、それが働きました。心から感謝する。神様があなたを祝福してください。 – hhh

+0

@hhhよろしくお願いします!他の人に受け入れられたように私の答えに印を付けてください – nhoxbypass

関連する問題