2017-11-17 6 views
0

로그인을 시도하면 응용 프로그램이 충돌합니다. 나는 navigationActivity으로 만들었습니다.으로 사용자를 연결해야합니다. 하지만 계속 충돌합니다.응용 프로그램 의도를 사용할 때 충돌이 발생했습니다.

유감스럽게도 앱이 작동을 멈췄습니다.

하지만 아래의이 줄을 비활성화하면 Toast이 표시되고 충돌은 없습니다.

도움말

Toast.makeText(LoginActivity.this, "CUSTOMER",Toast.LENGTH_SHORT).show(); 

Intent cHome = new Intent(LoginActivity.this, CHome.class); 
Common.currentUser = user; 
startActivity(cHome); 
finish(); 

그리고 난 제발 내 여기 매니페스트

package com.example.oracle.eliteafro; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.view.View; 
import android.support.design.widget.NavigationView; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

//import com.example.oracle.eliteafro.Common.Common; 
//import com.google.firebase.database.DatabaseReference; 
//import com.google.firebase.database.FirebaseDatabase; 

public class CHome extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    //Init Firebase 
    //FirebaseDatabase database; 
    // DatabaseReference salons; 

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


     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     toolbar.setTitle("Menu"); 
     setSupportActionBar(toolbar); 



     //Init Firebase 
     // database = FirebaseDatabase.getInstance(); 
     //salons = database.getReference("el_af_salon"); 



     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.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 


     //set name for user 
     View headerView = navigationView.getHeaderView(0); 
     loginName = (TextView) findViewById(R.id.loginName); 
     loginName.setText("Beedy"); 
     //loginName.setText(Common.currentUser.getFullname()); 

    } 

    @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.chome, 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_camera) { 
//   // Handle the camera action 
//  } else if (id == R.id.nav_gallery) { 
// 
//  } else if (id == R.id.nav_slideshow) { 
// 
//  } else if (id == R.id.nav_manage) { 
// 
//  } else if (id == R.id.nav_share) { 
// 
//  } else if (id == R.id.nav_send) { 
// 
//  } 

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

앱이 충돌 할 때 스택 추적을 게시하십시오. –

+0

코드를 게시 할 수 있습니까? –

+0

답변을 업데이트했습니다. 명확하지 않으면 CHOME 클래스를 입력하십시오. – diegoveloper

답변

1

당신의 AndroidManifest.xml

UPDATE의 활동으로 초메를 선언 다음과 같이 내 쵸메이다

업데이트 된 질문을 보았으므로 문제가 CHome 활동에 있으므로 텍스트를 설정하기 전에 TextView에 대한 참조를 얻지 못하고 있습니다.

TextView yourTextView = findViewById(R.id.your_text_view_id); 
yourTextView.setText("your text"); 

업데이트 2

좋아, 난 당신이, 당신은 엑스트라를 사용하여 매개 변수를 전달할 수있는 매개 변수를 전달할 필요가 있다고 생각합니다.

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.yourlayout); 
     User user = (User) getIntent().getSerializableExtra("user"); 
     //now you can use your user object 
     TextView yourTextView = findViewById(R.id.your_text_view_id); 
     yourTextView.setText(user.getName()); // for example 
    } 

이 사용자 클래스를 잊지 마세요 문제는 당신에서 onCreate 메소드의 내부

+0

매니 페스트 쇼에서 그는 매니 페스트에 Activity를 정의했습니다. –

+0

나는 그것을 주석으로 처리했다. 그러나 성공적으로 등록한 후에 내 사용자 이름을 유지해야한다. –

+0

내 대답을 업데이트했다. : 귀하의 텍스트 뷰 참조 ID가 레이아웃에 존재하는지 확인하십시오. – diegoveloper

1

를 Serializable를 구현한다 :

Intent cHome = new Intent(LoginActivity.this, CHome.class); 
cHome.putExtra("user", user); 
startActivity(cHome); 
finish(); 

는 그런 다음 쵸메 활동 수준에 당신의 여분을받을 필요 CHome에 대해서는 null TextView를 참조합니다. 그러니, 당신은 아마 당신이 메서드를 호출 않았다

TextView textView = findViewById(R.id.your_text_view_id); 

전화를 걸거나 깜빡하지만 당신은 findViewById를가 자동으로 실패하고 대신 null throughing의 반환 때문에 레이아웃에 존재 doensn't 뷰에 ID 전달 예외. 그래서 TextView에서 setText()를 호출하면 NullPointerexception이 발생합니다.