1. ホーム
  2. android

[解決済み] メソッド startActivity() を解決できません。

2022-02-01 11:44:39

質問

アンドロイド開発の初心者なのですが、アクティビティを変更する際に少し問題があります。メソッド内からアクティビティを変更しようとしているのですが、エラーが発生します。 cannot resolve method startActivity というエラーと、パラメータ終了時に Cannot resolve constructor 'Intent (...)' . 私は ご質問はこちら 同じような問題で、彼らの返答を私のプログラムに実装しようとしましたが、うまくいきませんでした。

以下はそのコードです。

public void open301(View view) {
    startActivity(new Intent(CustomAdapter.this, ThreeZeroOne.class));
}

上記のリンク先の質問の返信を見る前に、コードは同じエラーでこのように見えました。

public void open301(View view) {
   Intent openThree = new Intent(this,ThreeZeroOne.class);
    startActivity(openThree);
}

コードを完成させる。

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Intent;

public class CustomAdapter extends BaseAdapter {
  String[] result;
  Context context;
  int[] imageId;

  private static LayoutInflater inflater = null;

  public CustomAdapter(selectGame SelectGame, String[] prgmNameList, int[] prgmImages) {
    result = prgmNameList;
    context = SelectGame;
    this.imageId = prgmImages;
    inflater = (LayoutInflater) context.getSystemService(Context.
        LAYOUT_INFLATER_SERVICE);
  }

  @Override
  public int getCount() {
    return result.length;
  }

  @Override
  public Object getItem(int position) {
    return position;
  }

  @Override
  public long getItemId(int position) {
    return position;
  }

  public class Holder {
    TextView tv;
    ImageView img;
  }

  @Override
  public View getView(final int position, View convertView, ViewGroup parent) {
    Holder holder = new Holder();
    View rowView;
    rowView = inflater.inflate(R.layout.game_selection, null);
    holder.tv = (TextView) rowView.findViewById(R.id.txt);
    holder.img = (ImageView) rowView.findViewById(R.id.img);
    holder.tv.setText(result[position]);
    holder.img.setImageResource(imageId[position]);
    rowView.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast.makeText(context, "Beginning game " + result[position], Toast.LENGTH_SHORT).show();

      }
    });
    return rowView;
  }

  public void open301(View view) {
    Intent openThree = new Intent(this,ThreeZeroOne.class);
    startActivity(openThree);
  }
}

解決方法は?

アダプタのコンテキストを使用する必要があります。

public void open301(View view) {
  Intent openThree = new Intent(context,ThreeZeroOne.class);
  context.startActivity(openThree);
}