我的代码中有一个包含listview的活动,我通过适配器类控制这个listview。每个listview都有一个TextView,我想通过单击每个项目(TextView)来启动FragmentActivity。这是我的适配器类的代码......
class TrackAdapter extends SimpleAdapter {
Context context;
public TrackAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final TrackAdapter proxy = this;
final View trackView = super.getView(position, convertView, parent);
final TextView name = (TextView) trackView.findViewById(R.id.name);
Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
return trackView;
}
}
诗人类扩展了FragmentActivity并实现了ActioBar.TabListener:
public class Poet extends FragmentActivity implements
ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.poet);
}
通过检查logCat中的日志,我意识到问题出在这个部分..
Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
通过单击每个TextView,我得到一个&#34;强制关闭&#34;。请帮我解决这个问题!
答案 0 :(得分:1)
试试这个..
上下文为空,您应该初始化上下文,例如this.context = context;
Context context;
public TrackAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
this.context = context;
}
答案 1 :(得分:1)
您必须为文本视图设置OnClickListener
。
添加以下行:
name .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
在找到textview之后和开始新活动之前,在代码之间:
final TextView name = (TextView) trackView.findViewById(R.id.name);
Intent intent = new Intent(context ,Poet.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
并且在您的构造函数中,您必须拥有此代码(您的上下文为null):
this.context = context
如果您的问题没有解决,请发布您的日志。