【问题标题】:How do you start a fragment when a button is clicked?单击按钮时如何启动片段?
【发布时间】:2013-06-10 15:37:25
【问题描述】:

我尝试了几种方法,但似乎无法使它们起作用。

Here's my main activity

当按钮被点击时,它应该打开片段的开头,

like so

非常感谢您的帮助。

顺便说一句,我正在为片段使用 actionSherlock 插件

【问题讨论】:

  • 你的代码是什么?有很多方法可以实现这一目标。
  • 我可以把我的项目文件发给你吗?
  • 这是我之前帖子的链接,其中包含大部分代码 sn-ps:stackoverflow.com/questions/16909193/…

标签: android button android-fragments actionbarsherlock


【解决方案1】:

这是您的 Activity,有 2 个标签,

public class MainActivity extends SherlockFragmentActivity {
    /** Called when the activity is first created. */

    public Fragment frag1;
    public Fragment frag2;
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        ActionBar bar = getSupportActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        ActionBar.Tab tab1 = bar.newTab();
        ActionBar.Tab tab2 = bar.newTab();

        tab1.setText("");
        tab1.setIcon(R.drawable.abs__ic_menu_share_holo_dark);
        tab2.setText("");
        tab2.setIcon(R.drawable.abs__ic_voice_search);




            tab1.setTabListener(new MyTabListener());
            tab2.setTabListener(new MyTabListener());

            bar.addTab(tab1);
            bar.addTab(tab2);



    }

    private class MyTabListener implements ActionBar.TabListener {
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {

            switch (tab.getPosition()) {
            case 0:

                if (frag1 == null) {
                    // If not, instantiate and add it to the activity
                    frag1 = Fragment.instantiate(getApplicationContext(),
                            FeedsActivity.class.getName());
                    ft.add(android.R.id.content, frag1, "Feeds");
                } else {
                    // If it exists, simply attach it in order to show it
                    ft.show(frag1);
                }
                return;

            case 1:
                if (frag2 == null) {
                    // If not, instantiate and add it to the activity
                    frag2 = Fragment.instantiate(getApplicationContext(),
                            ProfileActivity.class.getName());
                    ft.add(android.R.id.content, frag2, "Profile");
                } else {
                    // If it exists, simply attach it in order to show it
                    ft.show(frag2);
                }
                return;


        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
            if (frag1 != null) {
                // Detach the fragment, because another one is being attached
                switch (tab.getPosition()) {
                case 0:
                    ft.hide(frag1);
                    return;
                case 1:
                    ft.hide(frag2);
                    return;

                }

            }
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            // TODO Auto-generated method stub
        }
    }
}

单击按钮时启动此活动

fragm1.java

    public class fragm1 extends Fragment {


@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflating layout
        View v = inflater.inflate(R.layout.activity_fragment, container, false);
        // We obtain layout references

        return v;

    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        // Button reset=(Button)findViewById(R.id.reset);




    }





}

【讨论】:

  • 谢谢!我试试这个,我会告诉你的。
  • 我遇到了一些错误,我认为这与我的导入有关。这是我的导入: import android.app.ActionBar;导入android.app.ActionBar.Tab;导入android.app.FragmentTransaction;导入android.os.Bundle;导入android.support.v4.app.Fragment;你能检查一下我遗漏了哪些进口商品吗?
  • 您正在使用本机操作栏库。导入相关的 sherlock 库。
  • 已经包含:import com.actionbarsherlock.app.SherlockFragmentActivity;
  • 您是否已将您的 sherlok libaray 导入到您的项目中? (通过右键单击项目并选择属性)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-30
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多