2017-11-09 14 views
1

ナビゲーション・ドロワー(HomePage.java)で自分のアカウントをクリックすると、アカウント・アクティビティ(account.java)に移動します。クリックしようとするとアカウントに戻ります(account.java )私のアプリのストップ。プロフェッショナルなコーデックが誰に役立つのか見てみましょう。挑戦してください。私はたくさん試しましたが、何も助けてくれませんでした。私の質問と私のコードを完全に見てください。このエラーによって怒っている。特定のアクティビティからナビゲーション・ドロワー・アクティビティに戻る方法

11-10 00:03:56.739 12243-12243/com.example.hppc.homeservices E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.example.hppc.homeservices, PID: 12243 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hppc.homeservices/com.example.hppc.homeservices.HomePage}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.os.Bundle.getCharSequence(java.lang.String)' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892) 
     at android.app.ActivityThread.-wrap11(Unknown Source:0) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593) 
     at android.os.Handler.dispatchMessage(Handler.java:105) 
     at android.os.Looper.loop(Looper.java:164) 
     at android.app.ActivityThread.main(ActivityThread.java:6541) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.os.Bundle.getCharSequence(java.lang.String)' on a null object reference 
     at com.example.hppc.homeservices.HomePage.onCreate(HomePage.java:33) 
     at android.app.Activity.performCreate(Activity.java:6975) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)  
     at android.app.ActivityThread.-wrap11(Unknown Source:0)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)  
     at android.os.Handler.dispatchMessage(Handler.java:105)  
     at android.os.Looper.loop(Looper.java:164)  
     at android.app.ActivityThread.main(ActivityThread.java:6541)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)  

NavigationDrawer Activity.java(HomePage.java)

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home_page); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    Bundle b = getIntent().getExtras(); 
    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
    TextView txtProfileName = (TextView) navigationView.getHeaderView(0).findViewById(R.id.tvEmailHome); 
    txtProfileName.setText(b.getCharSequence("Email")); 
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 
} 

@Override 
public void onBackPressed() { 
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    if (drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawer(GravityCompat.START); 
    } else { 
     super.onBackPressed(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.home_page, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_Account) { 
     startActivity(new Intent(HomePage.this,Account.class)); 
     finish(); 

    } if (id == R.id.nav_Services) { 


    } if (id == R.id.nav_settings) { 

    } if (id == R.id.nav_Help) { 

    } if (id == R.id.LogOut) { 
     FirebaseAuth.getInstance().signOut(); 
     startActivity(new Intent(HomePage.this,MainActivity.class)); 
     finish(); 

    } if (id == R.id.nav_share) { 

    } if (id == R.id.nav_send) { 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 

Account.java(ナビゲーションバーでマイアカウント)私は、ナビゲーション引き出しの中に私の口座に、クリック

private DatabaseReference databaseReference; 
private ListView details; 
private ArrayList<String> account = new ArrayList<>(); 
FirebaseUser user; 

String uid; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_account); 
    details=(ListView)findViewById(R.id.listview); 
    user = FirebaseAuth.getInstance().getCurrentUser(); 
    uid = user.getUid(); 

    final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, account); 

    details.setAdapter(arrayAdapter); 

    databaseReference = FirebaseDatabase.getInstance().getReference(); 

    databaseReference.addChildEventListener(new ChildEventListener() { 
     @Override 
     public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
      String user_name = dataSnapshot.child("Name").getValue(String.class); 
      String user_email = dataSnapshot.child("Email").getValue(String.class); 
      String user_phone = dataSnapshot.child("Phone").getValue(String.class); 
      if (user.getEmail().equalsIgnoreCase(user_email)) { 
       account.add("Name :" + user_name); 
       account.add("Email ID :" + user_email); 
       account.add("Phone Number :" + user_phone); 

       arrayAdapter.notifyDataSetChanged(); 
      } 
     } 
     @Override 
     public void onChildChanged(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

     @Override 
     public void onChildMoved(DataSnapshot dataSnapshot, String s) { 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if(id==android.R.id.home){ 
     Intent mainInten = new Intent(this, HomePage.class); 
     this.startActivity(mainInten); 
     //this.finish(); 
     //onBackPressed(); 
    } 
    return super.onOptionsItemSelected(item); 
} 

public void checking(View view) { 
    startActivity(new Intent(Account.this,MyAccount.class)); 
    finish(); 
} 

私は "account"アクティビティに移動しますが、そのアクティビティの上にある "account"アクティビティのgobackアイコンをクリックしようとすると、アプリケーションが停止しています。

+0

に起因:java.lang.NullPointerExceptionが:NULLオブジェクト参照に 'java.lang.CharSequence android.os.Bundle.getCharSequence(java.lang.Stringで)' 仮想メソッドを起動しようとする... – 0X0nosugar

答えて

0

私は同じ問題を抱えていました。私はアクションバーを削除すると、それは完璧に動作します。 Account.javaから下の行を削除します。

getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

アドバイスとして、ナビゲーション用の引き出しにはアクティビティを使用しないでください。フラグメントを使用することは、アクティビティよりも簡単です。 FragmentTransaction.addToBackStack(null);メソッドを使用して、以前のフラグメントに簡単に戻ることができます。 私はこのビデオチュートリアルに言及しました。それは役に立つかもしれません。

https://www.youtube.com/watch?v=-SUvA1fXaKw
+0

場合私はバックアイコンが削除され、あなたの答えは私の質問にちょうど適切ではないことを示唆したように削除する。私はそのアイコンをクリックするとバックアイコンが必要だ。私は引き出しアクティビティに戻ってみたい。[Google](https: /drive.google.com/open?id=1sUfS7EmciPsq7TNAb8tW_kMn5BiTb4d8).....そして私は断片に慣れていないので、後で私は断片を学ぶでしょう。 –

+0

あなたの参考にされたビデオはとても役に立ちます。ありがとうございます –

+0

ようこそLiyakath S. –

関連する問題