2015-06-28 18 views
15

Jestem nowy w rozwoju Androida i nie mam dogłębnej znajomości języka Java. Utknąłem na problemie przez długi czas. Próbuję otworzyć nową aktywność po kliknięciu przycisku. Ale pojawia się błąd, który powoduje błąd : nie obejmuje klasy: Katra_home.Brak klauzulującego błędu klasy Android Studio

Oto kod dla 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); 
     } 
    }); 

I to jest kod 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); 
    } 

Choć widziałem wiele odpowiedzi na StackOverflow, ale nie mogę zrozumieć, jak je Jestem nowy w rozwoju Androida. Chciałbym zapytać, jakie zmiany muszę wprowadzić w moim kodzie, aby to zadziałało.

Odpowiedz

25

Powinno być

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

Musisz użyć istniejącego kontekstu aktywności, aby rozpocząć nową działalność, nowa działalność nie została jeszcze utworzona, i nie można korzystać z jego kontekstu lub wywołać metody na nim.

Nie zgłoszenie błędu z powodu klasy z powodu użycia słowa kluczowego this. this jest odniesieniem do bieżącego obiektu - obiektu, którego metoda lub konstruktor jest wywoływana. Z wartością this można odwoływać się tylko do dowolnego elementu bieżącego obiektu z poziomu metody instancji lub konstruktora.

Katra_home.this jest nieprawidłowy konstrukt

0

sposób zastąpić kod w onClick() z tego:

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

powinno to idealne jeden :)

0

dzwonisz kontekst nie istniejąca aktywność ... po prostu zamień swój kod w onClick (View v) jako Intent intent = new Intent (this, Katra_home.class); startActivity (zamiar); to na pewno działa ....

-1
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(); 
      } 
     } 
    }); 
+0

Błąd linii tostów: Nie jest to klasa zamknięta. – Avinash

+0

Proszę podać wyjaśnienie, dlaczego/w jaki sposób ten kod rozwiąże problem. ty – Reg