web-dev-qa-db-ja.com

クラスを囲むエラーではありませんAndroid Studio

私はAndroid開発であり、Javaの詳細な知識がありません。長い間問題に悩まされています。ボタンのクリックで新しいアクティビティを開こうとしています。 エラー:囲むクラスではありません:Katra_homeというエラーが表示されます。

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);
        }
    });

そして、これは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);
    }

私はstackoverflowに関する多くの答えを見てきましたが、Android開発で新しいので、それらを理解することができませんでした。作業。

23
Ahmed Raza

そのはず

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

既存のアクティビティコンテキストを使用して新しいアクティビティを開始する必要があります。新しいアクティビティはまだ作成されておらず、そのコンテキストを使用したりメソッドを呼び出したりすることはできません。

囲んでいるクラスではないエラーは、thisキーワードの使用のためにスローされます。 thisは、現在のオブジェクト(メソッドまたはコンストラクターが呼び出されるオブジェクト)への参照です。 thisを使用すると、インスタンスメソッドまたはコンストラクター内から現在のオブジェクトのメンバーのみを参照できます。

Katra_home.thisは無効な構造です

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

これは完璧なものでなければなりません:)

7
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

既存のアクティビティではないコンテキストを呼び出しています...そのため、onClick(View v)のコードをIntent intent = new Intent(this、Katra_home.class)として置き換えてください。 startActivity(intent);それは間違いなく動作します。..

1
venu46

onClick()メソッドのコードをこれに置き換えます:

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