Android 如何从另一个片段运行片段
我有一个主要活动(活动1),它为导航抽屉充气(带有列出项目的listview)。抽屉由一个片段(MenuFragment)运行,这样我就可以根据所选的项目展开任何xml布局。现在我的问题是,当用户从抽屉中选择一个项目时,如何运行另一个活动(活动2),因为抽屉由MenuFragment运行,我可以从一个片段启动活动。非常感谢您的帮助。提前感谢。这类问题的一种常见模式是为每个片段提供一个侦听器接口,在该接口中,当片段中发生某些事情时,需要通知活动 因此,您的菜单片段可能看起来像:Android 如何从另一个片段运行片段,android,android-fragments,Android,Android Fragments,我有一个主要活动(活动1),它为导航抽屉充气(带有列出项目的listview)。抽屉由一个片段(MenuFragment)运行,这样我就可以根据所选的项目展开任何xml布局。现在我的问题是,当用户从抽屉中选择一个项目时,如何运行另一个活动(活动2),因为抽屉由MenuFragment运行,我可以从一个片段启动活动。非常感谢您的帮助。提前感谢。这类问题的一种常见模式是为每个片段提供一个侦听器接口,在该接口中,当片段中发生某些事情时,需要通知活动 因此,您的菜单片段可能看起来像: public cl
public class MenuFragment extends Fragment
{
public interface Listener
{
void onDrawerItemSelected();
}
private Listener listener;
public void setListener(Listener listener)
{
this.listener = listener;
}
// When drawer item selected, do something like
//
// if (listener != null)
// {
// listener.onDrawerItemSelected();
// }
}
public class TestActivity extends Activity implements MenuFragment.Listener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// MenuFragment fragment = ...;
// fragment.setListener(this);
}
@Override
public void onDestroy()
{
// MenuFragment fragment = ...;
// fragment.setListener(null);
super.onDestroy();
}
@Override
public void onDrawerItemSelected()
{
// TODO launch other activity here
}
}
public class MainActivity extends FragmentActivity implements MainFragment.getCommunication {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//called from the MainFragment
@Override
public void TalkToMe() {
MainFragment MainFrag = (MainFragment)getFragmentManager().findFragmentById(R.id.fragment_main);
MainFrag.MyMainFragmentMethod();
OtherFragment OtherFrag = (OtherFragment)getFragmentManager().findFragmentById(R.id.fragment_Other);
OtherFrag.MyMainFragmentMethod();
}
}
您的活动将类似于:
public class MenuFragment extends Fragment
{
public interface Listener
{
void onDrawerItemSelected();
}
private Listener listener;
public void setListener(Listener listener)
{
this.listener = listener;
}
// When drawer item selected, do something like
//
// if (listener != null)
// {
// listener.onDrawerItemSelected();
// }
}
public class TestActivity extends Activity implements MenuFragment.Listener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// MenuFragment fragment = ...;
// fragment.setListener(this);
}
@Override
public void onDestroy()
{
// MenuFragment fragment = ...;
// fragment.setListener(null);
super.onDestroy();
}
@Override
public void onDrawerItemSelected()
{
// TODO launch other activity here
}
}
public class MainActivity extends FragmentActivity implements MainFragment.getCommunication {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//called from the MainFragment
@Override
public void TalkToMe() {
MainFragment MainFrag = (MainFragment)getFragmentManager().findFragmentById(R.id.fragment_main);
MainFrag.MyMainFragmentMethod();
OtherFragment OtherFrag = (OtherFragment)getFragmentManager().findFragmentById(R.id.fragment_Other);
OtherFrag.MyMainFragmentMethod();
}
}
本质上,让你的活动带动演出。使用界面
您需要从片段创建活动的接口。比如:
public class MenuFragment extends Fragment
{
public interface Listener
{
void onDrawerItemSelected();
}
private Listener listener;
public void setListener(Listener listener)
{
this.listener = listener;
}
// When drawer item selected, do something like
//
// if (listener != null)
// {
// listener.onDrawerItemSelected();
// }
}
public class TestActivity extends Activity implements MenuFragment.Listener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// MenuFragment fragment = ...;
// fragment.setListener(this);
}
@Override
public void onDestroy()
{
// MenuFragment fragment = ...;
// fragment.setListener(null);
super.onDestroy();
}
@Override
public void onDrawerItemSelected()
{
// TODO launch other activity here
}
}
public class MainActivity extends FragmentActivity implements MainFragment.getCommunication {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//called from the MainFragment
@Override
public void TalkToMe() {
MainFragment MainFrag = (MainFragment)getFragmentManager().findFragmentById(R.id.fragment_main);
MainFrag.MyMainFragmentMethod();
OtherFragment OtherFrag = (OtherFragment)getFragmentManager().findFragmentById(R.id.fragment_Other);
OtherFrag.MyMainFragmentMethod();
}
}
片段类
public class MainFragment extends Fragment {
//interface to the MainActivity activity class
private getFragmentCommunication listener;
public interface getCommunication {
public void TalkToMe();
}
}
这里有一篇关于这方面的好文章:。您不应该从另一个片段调用片段。应该是通过活动 看看另一个。希望这有帮助