Je suis nouveau dans le développement Android et ne possède pas une connaissance approfondie de Java. Je suis coincé sur un problème pendant longtemps. J'essaie d'ouvrir une nouvelle activité en cliquant sur un bouton. Mais je reçois une erreur qui erreur: pas une classe englobante: Katra_home .
Voici le code pour MainActivity.Java
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn=(Button)findViewById(R.id.bhawan1);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent myIntent = new Intent(Katra_home.this, Katra_home.class);
Katra_home.this.startActivity(myIntent);
}
});
Et c'est le code pour Katra_home.Java
public class Katra_home extends BaseActivity {
protected static final float MAX_TEXT_SCALE_DELTA = 0.3f;
private ViewPager mPager;
private NavigationAdapter mPagerAdapter;
private SlidingTabLayout mSlidingTabLayout;
private int mFlexibleSpaceHeight;
private int mTabHeight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.katra_home);
ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
ab.setHomeButtonEnabled(true);
}
Bien que j'ai vu beaucoup de réponses sur stackoverflow mais je ne pouvais pas les comprendre car je suis nouveau dans le développement Android. Je voudrais donc demander quels changements dois-je apporter à mon code pour le faire fonctionner.
CA devrait etre
Intent myIntent = new Intent(this, Katra_home.class);
startActivity(myIntent);
Vous devez utiliser le contexte d'activité existant pour démarrer une nouvelle activité, une nouvelle activité n'est pas encore créée et vous ne pouvez pas utiliser son contexte ou appeler des méthodes sur celle-ci.
pas une classe englobante erreur est renvoyée à cause de votre utilisation du mot clé this
. this
est une référence à l'objet actuel - l'objet dont la méthode ou le constructeur est appelé. Avec this
, vous ne pouvez faire référence à aucun membre de l'objet actuel à partir d'une méthode d'instance ou d'un constructeur.
Katra_home.this
est une construction non valide
Intent myIntent = new Intent(MainActivity.this, Katra_home.class);
startActivity(myIntent);
Cela devrait le parfait :)
String user_email = email.getText().toString().trim();
firebaseAuth
.createUserWithEmailAndPassword(user_email,user_password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
Toast.makeText(RegistraionActivity.this, "Registration sucessful", Toast.LENGTH_SHORT).show();
startActivities(new Intent(RegistraionActivity.this,MainActivity.class));
}else{
Toast.makeText(RegistraionActivity.this, "Registration failed", Toast.LENGTH_SHORT).show();
}
}
});
remplace le code dans la méthode onClick () par ceci:
Intent myIntent = new Intent(this, Katra_home.class);
startActivity(myIntent);
vous appelez le contexte d'activité non existante ... remplacez simplement votre code dans onClick (Affichage v) par Intention Intention = nouvelle Intention (this, Katra_home.class); startActivity (intent); il va certainement fonctionner ....