添加一个按钮,将新的列表活动发布到片段

时间:2013-08-17 04:30:53

标签: android button android-activity android-fragments

我有一个片段,我在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>

谢谢!

2 个答案:

答案 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(....)