我正在使用片段。我需要扩展 FragmentActivity 的类来实现从我的片段中充当侦听器的接口。当我从 gridview 单击一个项目时,它会触发 onItemClick 方法,但即使我在 GamePlayActivity 中设置了侦听器变量,它也是 null。
我的理解是,当我实例化我的片段以设置侦听器以及在我的片段类上调用 onCreateView() 时,我正在处理两件不同的事情。
来自 Google 的示例使用 onClick 执行相同的实现,并且可以正常工作。不在我身上。
以 MainActivity 扩展 FragmentActivity和Fragment 类为例。
片段 1
public class FragmentOne extends Fragment implements OnItemClickListener {
Listener listener = null;
interface Listener {
public void applyGameLogic();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_fragpane, container, false);
GridView gridView = (GridView) layout.findViewById(R.id.grid);
gridView.setAdapter(new ImageAdapter(layout.getContext()));
gridView.setOnItemClickListener(this);
return layout;
}
public void setListener(Listener listener) {
this.listener = listener;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//listener.applyGameLogic(); this listener is null
}
}
GamePlayActivity
public class GamePlayActivity extends FragmentActivity implements WordPane.Listener, ChainPane.Listener {
private FragmentOne fragment1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.game_container);
fragment1 = new FragmentOne();
fragment1.setListener(this);
}
... applyGameLogic method follows but its empty for now
}