无法解析方法startActivity()
问题描述:
我是新来的android开发,并有一点改变活动的问题。我试图从一个方法内改变活动,但是我得到了错误cannot resolve method startActivity
,并在参数上结束了错误Cannot resolve constructor 'Intent (...)'
。我发现a question here有同样的问题,并试图在我的程序中实现他们的回复,但没有喜悦。无法解析方法startActivity()
下面的代码:
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);
}
+2
'意图(this,'是错的 – Blackbelt
答
要开始一个新的活动,您将需要一个背景下,从开始,你的当前活动“BaseAdapter”不是一个上下文,luckly每个视图有一个上下文,所以你可以这样做:
public void open301(View view) {
Intent openThree = new Intent(view.getContext(), ThreeZeroOne.class);
view.getContext().startActivity(openThree);
}
答
首先获得您的语境:
private Context context;
public CustomAdapter(Context context) {
this.context = context;
}
然后:
context.startActivity(openThree);
你在哪里尝试执行该方法?在Acticity中?类?分段? –
在课堂上,我会将代码发布到位。 – COYG