小编gal*_*van的帖子

在backstack上不调用片段onResume()和onPause()

我在一个活动中有多个片段.在按钮上单击我开始一个新片段,将其添加到backstack.我自然希望调用onPause()当前片段和onResume()新片段的方法.好吧,它没有发生.

LoginFragment.java

public class LoginFragment extends Fragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      final View view  =   inflater.inflate(R.layout.login_fragment, container, false);
      final FragmentManager mFragmentmanager =  getFragmentManager();

      Button btnHome  = (Button)view.findViewById(R.id.home_btn);
      btnHome.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
           HomeFragment fragment    = new HomeFragment();
           FragmentTransaction ft2   =  mFragmentmanager.beginTransaction();
           ft2.setCustomAnimations(R.anim.slide_right, R.anim.slide_out_left
                    , R.anim.slide_left, R.anim.slide_out_right);
           ft2.replace(R.id.middle_fragment, fragment);
           ft2.addToBackStack(""); 
           ft2.commit();    
         }
      });
  }

  @Override
  public void onResume() {
     Log.e("DEBUG", "onResume of LoginFragment");
     super.onResume();
  }

  @Override
  public void onPause() …
Run Code Online (Sandbox Code Playgroud)

android onresume android-fragments back-stack

183
推荐指数
5
解决办法
23万
查看次数

从DialogFragment回调片段

问题:如何创建从DialogFragment到另一个Fragment的回调.就我而言,涉及的活动应该完全不知道DialogFragment.

考虑一下我

public class MyFragment extends Fragment implements OnClickListener
Run Code Online (Sandbox Code Playgroud)

然后在某些时候我做到

DialogFragment dialogFrag = MyDialogFragment.newInstance(this);
dialogFrag.show(getFragmentManager, null);
Run Code Online (Sandbox Code Playgroud)

MyDialogFragment的样子

protected OnClickListener listener;
public static DialogFragment newInstance(OnClickListener listener) {
    DialogFragment fragment = new DialogFragment();
    fragment.listener = listener;
    return fragment;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果DialogFragment在其生命周期中暂停和恢复,则无法保证听众会出现.片段中唯一的保证是通过setArguments和getArguments通过Bundle传递的.

如果它应该是监听器,有一种方法可以引用该活动:

public Dialog onCreateDialog(Bundle bundle) {
    OnClickListener listener = (OnClickListener) getActivity();
    ....
    return new AlertDialog.Builder(getActivity())
        ........
        .setAdapter(adapter, listener)
        .create();
}
Run Code Online (Sandbox Code Playgroud)

但我不希望活动监听事件,我需要一个片段.实际上,它可以是任何实现OnClickListener的Java对象.

考虑通过DialogFragment呈现AlertDialog的Fragment的具体示例.它有Yes/No按钮.如何将这些按钮发送回创建它的Fragment?

android callback android-fragments android-dialogfragment

154
推荐指数
10
解决办法
13万
查看次数

Android:在Activity生命周期中何时调用onCreateOptionsMenu?

我放了几个断点onCreate(一个在开头,一个在方法结束时),我也在一个开头放了一个断点onCreateOptionsMenu.onCreate首先调用该方法,并在onCreateOptionsMenu调用之前调用该方法.

我正试图Fragment在我的应用程序中分离导航代码,所以我onCreateOptionsMenu根据应用程序是否在手机/平板电脑上运行来分配给我的几个对象(我使用屏幕大小来确定这个,我的布局文件是大屏幕有一个View I在布局膨胀后检查).我遇到的问题是,我在onCreate中创建了这些对象,当我引用该对象时,我得到一个空指针异常onCreateOptionsMenu.

android oncreate android-fragments

144
推荐指数
4
解决办法
7万
查看次数

如何设置导航抽屉从右到左打开

首先我知道这个问题出现在此之前,但在尝试了很多之后我仍然没有成功.我从Android Developers网站开始研究这个例子 .

我正在尝试将菜单设置为从右到左打开,而不是在示例中如何实现(从左到右).此外,我想将打开菜单按钮移动到操作栏的右侧.我也在这里提出了一些答案,例如在这个答案中.

我尝试改变视图和布局的重力,但我得到错误:

没有抽屉视图发现绝对重力LEFT

你可以帮我弄清楚我的代码中有什么问题,为了设置菜单从右边打开,我应该改变什么,并将操作栏按钮移动到右侧?

xml代码在这里:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_gravity="right"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/content_frame"
        android:layoutDirection="rtl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

    <ListView android:id="@+id/left_drawer"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="10dp"
        android:background="#111"/>

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

android right-to-left navigation-drawer

73
推荐指数
4
解决办法
11万
查看次数

检测片段内的ViewPager选项卡更改

我有一个ViewPager多个片段.在一个Fragment我播放音频.当我滑动到另一个片段时,我想停止音频播放.如何检测到另一个片段现在可见ViewPager

我试着重写onStoponHiddenChanged.没有成功.必须有一些"你不再活跃"的方法来覆盖.没有?

android android-fragments android-viewpager

65
推荐指数
1
解决办法
3万
查看次数

android:configChanges ="orientation"不适用于片段

我只是想让我的一些应用程序适应HoneyComb.

我面临的问题是我的方向变化活动被破坏(风景/肖像)

当我使用经典活动时,我在清单中写道:

但现在,所有这些线路都不再起作用了!

有解决方法吗?

我的代码:

    <activity android:name=".TwitterActivity" android:label="@string/app_name"
        android:configChanges="keyboardHidden|orientation" />

    <activity android:name=".TwitterActivity$AppListFragment"
    android:configChanges="keyboardHidden|orientation"  />
Run Code Online (Sandbox Code Playgroud)

android restart android-fragments android-activity

59
推荐指数
5
解决办法
7万
查看次数

替换Fragment时出现IllegalStateException

这是使用兼容包的小型Android 2.2测试应用程序.这是(当然错误的)我在接收点击时尝试替换片段的方式.我正在尝试用相同Fragment类的新(不同)实例替换它.正如我将解释它不能按预期工作,我需要帮助:

public class MainFragmentActivity extends FragmentActivity {
  ...

  public void myAction(View view) {
    ...
    RightFragment newRightFrag = RightFragment.newInstance(myNewOption);
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
    ft.replace(R.id.landscape_right_fragment, newRightFrag);
    ft.commit();
  }
}
Run Code Online (Sandbox Code Playgroud)

你一定会看到我的错误.无论如何,让我们更多地解释应用程序应该做什么:

景观取向:

---------                ----------
| L | R |  -> click ->   | L | R2 |
---------                ----------
Run Code Online (Sandbox Code Playgroud)

在横向方向上,活动有一个包含2个片段的视图:" leftLand "和" rightLand ",如果单击片段" leftLand " 的按钮,则它会更改创建一个新片段并将" rightLand "片段实例替换为另一个片段FragamentActivity类的实例.使这两个实例不同的是传递给"newInstance(int)"的参数,它基于单击的按钮.

纵向 :

-----                  -----
|   |                  |   |
| L |   -> click ->    | R |
|   |                  |   | …
Run Code Online (Sandbox Code Playgroud)

android android-fragments

44
推荐指数
1
解决办法
3万
查看次数

Android - StableIDs的含义是什么?

我正在实现一个ExpandableListView的ListAdapter,在工作时我看到我需要覆盖函数boolean hasStableIds().谁能解释一下,稳定ids的含义是什么?什么时候需要这个?

android listview

41
推荐指数
2
解决办法
2万
查看次数

Android:片段重叠问题

当我在标签之间切换并将片段附加到下面的标签视图时,我面临着重叠片段的问题是我的代码请帮忙

public class FragmentManage extends Fragment implements ActionBar.TabListener {

    private Fragment mFragment;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {

        View v = inflater.inflate(R.layout.fragment_manage, container, false);

        OnClickListener clickListener = new OnClickListener() { 
            public void onClick(View v) {
                FragmentTransaction ft = getFragmentManager().beginTransaction();
                switch(v.getId()) {
                    case R.id.imageBtnCategory:
                        if (mFragment == null){
                            mFragment = new FragmentCategory();
                        }
                        ft.replace(android.R.id.content, mFragment);
                        break;
                    case R.id.imageBtnManageKey:
                        if (mFragment == null){
                            mFragment = new FragmentKeys();
                        }
                        ft.replace(android.R.id.content, mFragment);
                        break;
                    case R.id.imageBtnChangePswd:
                        if (mFragment == null){
                            mFragment …
Run Code Online (Sandbox Code Playgroud)

android overlapping android-fragments

34
推荐指数
7
解决办法
5万
查看次数

将create-react-app从javascript迁移到typescript

几个月前我使用create-react-app启动了一个react项目,我很有兴趣将项目从Javascript迁移到Typescript.

我看到有一种方法可以使用标志创建使用typescript的react应用程序:

--scripts-version=react-scripts-ts
Run Code Online (Sandbox Code Playgroud)

但我没有找到任何解释如何将现有的JS项目迁移到TS.我需要它以递增方式完成,这样我就可以使用.js和.ts文件,这样我就可以随着时间的推移进行转换.有没有人有这种迁移的经验?为使这项工作,应该采取哪些必要步骤?

javascript typescript reactjs create-react-app

32
推荐指数
2
解决办法
8839
查看次数