是否可以将空白活动转换为碎片活动

时间:2015-03-18 14:26:42

标签: android android-activity android-fragmentactivity

我目前有一个我正在使用的单位转换器应用程序。

这里我使用了多个空白活动。可以使用MainActivity打开每个单元的活动。但现在我想让它平板电脑友好。

因此我想现在使用FragmentActivity。是否可以将空白活动转换为碎片活动。

2 个答案:

答案 0 :(得分:1)

您需要做的就是将活动中的所有特定于视图的逻辑转换为片段,然后在活动中加载片段。

例如,

public class MainActivity extends Activity {
    @InjectView(R.id.button)
    public Button button;

    @OnClick(R.id.button)
    public void onButtonClick(View view) {
         Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         ButterKnife.inject(this);
    }
}

这种逻辑进入

public class MainFragment extends Fragment {
    @InjectView(R.id.button)
    public Button button;

    @OnClick(R.id.button)
    public void onButtonClick(View view) {
         Toast.makeText(this, "Hello!", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View view = inflater.inflate(R.layout.fragment_main, container, false);
         ButterKnife.inject(this, view);
         return view;
    }
}

您的Activity需要静态或动态地显示此片段。如果你动态,你需要在你的活动中使用以下几行:

public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        FragmentManager fm = getSupportFragmentManager();
        if(savedInstanceState == null) {
            fm.beginTransaction()
                .add(R.id.container, new MainFragment())
                .commit();
        }
        fm.addOnBackStackChangedListener(new OnBackStackChangedListener() {
            @Override
            public void onBackStackChanged() {
                if(getSupportFragmentManager().getBackStackEntryCount() == 0) finish();
            }
        });

    }
}

如果你是静态的,那么你需要在布局XML中为活动指定片段。

http://developer.android.com/guide/components/fragments.html#Adding

答案 1 :(得分:0)

我会访问Android网站,因为他们对how fragments work提供了相当不错的解释。

您可以了解如何通过其他Android链接here将其添加到现有应用中。