安卓:SlidingMenu变化内容 [英] Android: SlidingMenu change content
问题描述
我使用SlidingMenu用一个ListView作为一个菜单,我想改变我的MainActivity动态基于一个ListView元素的点击量。我知道,我必须使用片段来实现这一目标。
I'm using SlidingMenu with a ListView as a menu and I want to change the content of my MainActivity dynamically based on the click of a ListView element. I know that I have to use Fragments to achieve this.
我有没有在它尚未PlayerFragment:
I have a PlayerFragment with nothing in it yet:
public class PlayerFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.activity_player_fragment, container, false);
}
}
和它在我的标准MainActivity与SlidingMenu:
And my standard MainActivity with a SlidingMenu in it:
public class MainActivity extends SlidingFragmentActivity {
private ListView mainListView;
private ArrayAdapter<String> listAdapter;
private SlidingMenu menu;
protected ListFragment mFrag;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidth(8);
menu.setFadeDegree(0.8f);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.setBehindWidth(600);
menu.setMenu(R.layout.menu_frame);
mainListView = (ListView) findViewById(R.id.listView1);
String[] planets = new String[] { "News", "Android", "Control",
"About" };
ArrayList<String> planetList = new ArrayList<String>();
planetList.addAll(Arrays.asList(planets));
listAdapter = new ArrayAdapter<String>(this,
R.layout.custom_list_element, R.id.title, planetList);
mainListView.setAdapter(listAdapter);
mainListView.setSelector(R.layout.listselector);
mainListView
.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String item = String.valueOf(mainListView
.getItemAtPosition(position));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onBackPressed() {
if (menu.isMenuShowing()) {
menu.toggle();
} else {
super.onBackPressed();
}
}
}
我如何调用标准片段应用程序启动时?我如何更改基础上的ListView的点击片段?
How do I call the standard fragment when the app starts? And how do I change the fragment based on the click of the ListView?
我想到的是这样的:
if (fragment == null) {
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.RELATIVEVIEW_ID_HERE, new BasicFragment());
ft.commit();
}
和改变片段这样的:
Fragment fg = NewsFragment.newInstance();
getFragmentManager().beginTransaction().add(R.id.RELATIVEVIEW_ID_HERE, fg).commit();
这是正确的?
在此先感谢!
推荐答案
您可以使用 ft.replace(...)
您所有的片段
的变化,包括显示第一个,像这样:
You can use ft.replace(...)
for all your Fragment
changes, including displaying the first one, like so:
FragmentTransaction ft = fm.beginTransaction();
MyFragment myFragment = myFragment.newInstance();
ft.replace(android.R.id.content, myFragment).commit();
这篇关于安卓:SlidingMenu变化内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!