无法解析方法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); 
} 

}

+0

你在哪里尝试执行该方法?在Acticity中?类?分段? –

+0

在课堂上,我会将代码发布到位。 – COYG

你应该使用适配器的情况下:

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

这工作有点,我不需要将意图名称放在startActivity的括号中?否则它将如何知道要开始的活动。 - 这与你的旧评论有关。 – COYG

+0

我编辑我的答案以清楚说明,还有其他疑问吗? –

+1

'Intent(this,'是错的 – Blackbelt

首先获得您的语境​​:

private Context context; 

public CustomAdapter(Context context) { 
     this.context = context;  
} 

然后:

  context.startActivity(openThree);