web-dev-qa-db-ger.com

Kein umschließender Klassenfehler von Android Studio

Ich bin neu in der Android-Entwicklung und habe keine gründlichen Java-Kenntnisse. Ich stehe lange Zeit vor einem Problem. Ich versuche, eine neue Aktivität beim Klicken auf die Schaltfläche zu öffnen. Aber ich bekomme einen Fehler, der Fehler: keine umschließende Klasse: Katra_home .

Hier ist der Code für 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);
        }
    });

Und das ist der Code für 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);
    }

Ich habe zwar viele Antworten auf stackoverflow gesehen, konnte sie aber nicht verstehen, da ich in der Android-Entwicklung neu bin. Daher möchte ich fragen, welche Änderungen ich in meinem Code vornehmen muss, damit er funktioniert. 

19
Ahmed Raza

Es sollte sein 

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

Sie müssen den vorhandenen Aktivitätskontext verwenden, um eine neue Aktivität zu starten. Es wird noch keine neue Aktivität erstellt, und Sie können den Kontext oder die Aufrufmethoden nicht verwenden.

Keine einschließende Klasse Fehler aufgrund der Verwendung des this-Schlüsselworts. this ist eine Referenz auf das aktuelle Objekt - das Objekt, dessen Methode oder Konstruktor aufgerufen wird. Mit this können Sie nur innerhalb einer Instanzmethode oder eines Konstruktors auf ein beliebiges Element des aktuellen Objekts verweisen. 

Katra_home.this ist ein ungültiges Konstrukt

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

Dies sollte der perfekte sein :)

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

ersetzen Sie den Code in der onClick () -Methode durch Folgendes:

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

sie rufen den Kontext nicht vorhandener Aktivitäten auf ... ersetzen Sie einfach Ihren Code in onClick (View v) als Intent Intent = New Intent (diese, Katra_home.class); startActivity (intent);. Es wird auf jeden Fall funktionieren .... 

0
venu46