web-dev-qa-db-fra.com

Pas une erreur de classe englobante Android Studio

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. 

19
Ahmed Raza

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

33
Dalija Prasnikar
Intent myIntent = new Intent(MainActivity.this, Katra_home.class);
startActivity(myIntent);

Cela devrait le parfait :)

6
Abhilash
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();
            }
        }
    });
1
Avinash

remplace le code dans la méthode onClick () par ceci:

Intent myIntent = new Intent(this, Katra_home.class);
startActivity(myIntent);
0
Max77

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 .... 

0
venu46