我在一个活动中有多个片段.在按钮上单击我开始一个新片段,将其添加到backstack.我自然希望调用onPause()
当前片段和onResume()
新片段的方法.好吧,它没有发生.
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) 问题:如何创建从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?
我放了几个断点onCreate
(一个在开头,一个在方法结束时),我也在一个开头放了一个断点onCreateOptionsMenu
.onCreate
首先调用该方法,并在onCreateOptionsMenu
调用之前调用该方法.
我正试图Fragment
在我的应用程序中分离导航代码,所以我onCreateOptionsMenu
根据应用程序是否在手机/平板电脑上运行来分配给我的几个对象(我使用屏幕大小来确定这个,我的布局文件是大屏幕有一个View I在布局膨胀后检查).我遇到的问题是,我在onCreate中创建了这些对象,当我引用该对象时,我得到一个空指针异常onCreateOptionsMenu
.
首先我知道这个问题出现在此之前,但在尝试了很多之后我仍然没有成功.我从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) 我有一个ViewPager
多个片段.在一个Fragment
我播放音频.当我滑动到另一个片段时,我想停止音频播放.如何检测到另一个片段现在可见ViewPager
?
我试着重写onStop
和onHiddenChanged
.没有成功.必须有一些"你不再活跃"的方法来覆盖.没有?
我只是想让我的一些应用程序适应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 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) 我正在实现一个ExpandableListView的ListAdapter,在工作时我看到我需要覆盖函数boolean hasStableIds().谁能解释一下,稳定ids的含义是什么?什么时候需要这个?
当我在标签之间切换并将片段附加到下面的标签视图时,我面临着重叠片段的问题是我的代码请帮忙
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) 几个月前我使用create-react-app启动了一个react项目,我很有兴趣将项目从Javascript迁移到Typescript.
我看到有一种方法可以使用标志创建使用typescript的react应用程序:
--scripts-version=react-scripts-ts
Run Code Online (Sandbox Code Playgroud)
但我没有找到任何解释如何将现有的JS项目迁移到TS.我需要它以递增方式完成,这样我就可以使用.js和.ts文件,这样我就可以随着时间的推移进行转换.有没有人有这种迁移的经验?为使这项工作,应该采取哪些必要步骤?
android ×9
back-stack ×1
callback ×1
javascript ×1
listview ×1
oncreate ×1
onresume ×1
overlapping ×1
reactjs ×1
restart ×1
typescript ×1