我目前有一个我正在使用的单位转换器应用程序。
这里我使用了多个空白活动。可以使用MainActivity打开每个单元的活动。但现在我想让它平板电脑友好。
因此我想现在使用FragmentActivity。是否可以将空白活动转换为碎片活动。
答案 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将其添加到现有应用中。