我有一个片段,我在XML中也添加了一个按钮。我希望这个按钮能够启动一个新的菜单,所以我把它作为一个列表活动java类,它指向点击它的时候,我的问题是,我在哪里添加按钮和onclick方法?在页面片段类中?当我尝试这样做时,它无法解决我用来定义按钮的方法“findviewbyid”。它还会为setContentView抛出相同的错误。我已经尝试将此代码放在Frag的Activity类中,但是当我这样做时,app无法加载。这是我试图添加的代码,以使按钮工作:
Button chOptions = (Button) findViewById(R.id.bOptions);
chOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setContentView(R.layout.channel_menu);
}
});
channel_menu是我创建的列表活动。这是我的清单声明:
<activity android:name=".ChannelMenu"
android:label="Channel Options"
android:theme="@android:style/Theme.Holo">
<intent-filter>
<action android:name="android.intent.action.CHANNELMENU" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
谢谢!
答案 0 :(得分:1)
如下所示,将代码添加到onActivityCreated()并使用getView()方法
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
// get the button view
Button chOptions = (Button) getView().findViewById(R.id.bOptions);
// set a onclick listener for when the button gets clicked
chOptions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setContentView(R.layout.channel_menu);
// Start new list activity
public void onClick(View v) {
Intent mainIntent = new Intent(getActivity(),
CarouselActivity.class);
startActivity(mainIntent);
}
});
}
答案 1 :(得分:0)
如果您想在Fragment
的支持视图中注入一些小部件,那么您应该在onCreateView
中对您创建的视图进行全局引用:
View root;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
root = inflater.inflate(R.layout.flash_cards_box, container, false);
context = getActivity().getApplicationContext();
}
然后将小部件注入其他地方:
root.findViewById(...);
要访问setContentView
,可以通过Activity
类访问:
getActivity().setContentView(....)