1

我有一个片段,我也在 XML 中添加了一个按钮。我想让这个按钮启动一个新的菜单,所以我把它做成了一个列表活动java类,让它在被点击时指向它,我的问题是,我在哪里添加按钮和onclick方法?在页面片段类中?当我尝试这样做时,它当然无法解析我用来定义按钮的方法“findviewbyid”。它还会为 setContentView 引发相同的错误。我也尝试将此代码放在片段的 Activity 类中,但是当我这样做时应用程序无法加载。这是我试图添加以使按钮工作的代码:

    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>

谢谢!

4

2 回答 2

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

}
于 2013-08-17T04:44:17.837 回答
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(....)
于 2013-08-17T04:43:18.970 回答