对于极少数用户来说,我面临着一个非常令人困惑的问题.在Fragment中按下按钮时会发生错误,该按钮会启动另一个Fragment Activity.这是堆栈跟踪:
I/20:22:23.901 ActivityManager( 1668)
Start proc com.brandall.nutter for activity com.brandall.nutter/.ActivityHomeFragment: pid=8956 uid=10125 gids={50125, 3003, 3001, 3002, 1015, 1023, 1006, 1028}
I/20:22:23.881 WindowState( 1668)
WIN DEATH: Window{41ed1948 u0 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment}
W/20:22:23.881 ActivityManager( 1668)
Force removing ActivityRecord{411c4188 u0 com.brandall.nutter/.ActivityLinkAppsFragment}: app died, no saved state
I/20:22:23.881 WindowState( 1668)
WIN DEATH: Window{41b6a178 u0 Toast EXITING}
W/20:22:23.881 InputDispatcher( 1668)
Attempted to unregister already unregistered input channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)'
W/20:22:23.871 ActivityManager( 1668)
Scheduling restart of crashed service com.brandall.nutter/.TTSS in 80000ms
I/20:22:23.871 ActivityManager( 1668)
Process com.brandall.nutter …Run Code Online (Sandbox Code Playgroud) 我正在处理片段事务,而backstack是这样的:
fragA => fragB => fragC => fragD
Run Code Online (Sandbox Code Playgroud)
我想从碎片回来之后回到fragA
fragD => onBackPress => fragA
Run Code Online (Sandbox Code Playgroud)
所以,我试过像:
getChildFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Run Code Online (Sandbox Code Playgroud)
但它清除了所有的后台堆叠,如何将第一个碎片保留在后台堆叠中?非常感谢
android android-fragments back-stack android-fragmentactivity fragment-backstack
我知道这里有一些关于这方面的话题,但我找不到一个可以为我的案子工作的解决方案.
我有一个使用自定义的工作滑动图库FragmentActivity,FragmentPagerAdapter其中包含碎片列表.
在内FragmentActivity是一个ImageView"删除".如果单击,deleteMedia()则调用该函数,然后应删除当前值,Fragment并Fragment显示以下内容.在我的例子中我该如何做到这一点?
FragmentActivity:
public class GalleryPagerActivity extends FragmentActivity implements OnClickListener {
private Intent intent;
private SharedPreferences settings;
private PagerAdapter mPagerAdapter;
private ViewPager mPager;
private List<Fragment> fragments;
private List<WhiteboardMedia> wiList;
private int selectedPosition;
private LinearLayout llTop;
private TextView tvTop;
private ImageView delete;
private ImageView share;
private TextView tvCounter;
private TextView tvFilename;
private TextView tvFilesize;
private TextView tvDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try { …Run Code Online (Sandbox Code Playgroud) android android-fragments fragmentpageradapter android-fragmentactivity
我有一个兼容的ViewPager与一个嵌入的PagerTitleStrip元素,它工作正常,但点击PagerTitleStrip不会按预期切换到相应的视图.我查看了文档但是小部件没有任何内置方法将onClickListeners附加到PagerTitleStrip对象.这似乎有点奇怪,因为这可能是大多数人所期望的.
所以问题是我如何使标题条可点击?
我也试图弄清楚是否有一种方法可以在选定的标题条下显示粗的下划线而不添加TabHost,如果可能的话.
这是代码:
主要布局view_pager.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#ccc"
android:textColor="#fff" />
</android.support.v4.view.ViewPager>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
进入ViewPager的两个片段布局:
fragment_connect.xml(第二个是相同的,所以不包括在内)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_view_connect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="connect"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
主要活动类StandardViewPagerActivity.java:
package com.example.standardviewpager;
import java.util.List;
import java.util.Vector;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.Menu;
public class StandardViewPagerActivity extends FragmentActivity {
private …Run Code Online (Sandbox Code Playgroud) 我想添加 PreferenceFragment一个FragmentPagerAdapter.
我的课程延伸FragmentActivity,我尝试过FragmentTransaction,如下所示,以及尝试添加到容器,似乎无法得到任何工作.没有错误被抛出,实际上没有任何反应.
主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中:
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
我的选项菜单选择:
android.app.FragmentManager fm;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
JJSettings settings = new JJSettings();
fm = getFragmentManager();
FragmentTransaction fragTrans = fm.beginTransaction();
// I also tried `replace()` here as well. Same 'nothing happens' result.
fragTrans.add(settings, …Run Code Online (Sandbox Code Playgroud) 关于我的应用程序
我正在开发一个日历应用程序.想要通过水平滑动导航显示月视图?这意味着无限滚动用户可以按月向右和向左滚动到任何年份的任何日期/月份.我发现ViewPager非常充分地用来实现这个目标.(我真的不知道其他什么是使用完整的方法).通过点击日期单元格,用户可以看到添加到该日期的详细信息或事件(我不知道)我想链接设备日历).
关于这个问题
我能够将新页面添加到我的View寻呼机的末尾而没有任何问题.但是如果用户向左滑动,我需要在我的ViewPager的开头添加一个页面..当我向begning(索引位置为零)添加页面时,这将替换我在零位置的当前页面,并且只能添加一页(没有添加新页面,我不知道为什么).在零位置上添加页面后,当用户向右滑动并返回最后一页强制关闭时,我无法将视图添加页面添加到视图寻呼机的末尾:
java.lang.IllegalStateException: Can't change tag of fragment MyFragment{40526bb8 #2 id=0x7f070000 android:switcher:2131165184:2}: was android:switcher:2131165184:2 now android:switcher:2131165184:3
Run Code Online (Sandbox Code Playgroud)
在简单的句子中,
我想知道将页面添加到View寻呼机的开头和结尾的正确方法是什么?
码
活动和适配器
public class PageViewActivity extends FragmentActivity {
ViewPager pager;
MyPageAdapter pageAdapter;
ArrayList<Fragment> fragments;
int page_num = 0;
int current_page = 1;
int selected_page = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_view);
pager = (ViewPager) findViewById(R.id.viewpager);
fragments = getFragments();
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), pager,
fragments);
pager.setAdapter(pageAdapter);
pager.setCurrentItem(2);
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// setting …Run Code Online (Sandbox Code Playgroud) 我必须在我的应用程序中实现"标准"片段导航(请参阅链接).
问题是当设备处于纵向模式时,应该只显示1个片段,当它旋转到横向模式时,应显示2个片段.
我试着用两种不同的方式做到这一点:
1)我只使用一个具有不同肖像和横向布局的活动.
纵向布局xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/main_frame_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这里的景观布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/main_frame_fragment_container_left"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/main_frame_fragment_container_right"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Activity`s onCreate方法:
private static ItemsFragment mItemsFragment;
private static ItemDetailsFragment mItemDetailsFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (mItemsFragment == null) {
mItemsFragment = ItemsFragment.newInstance();
}
if (mItemDetailsFragment == null) {
mItemDetailsFragment = ItemDetailsFragment.newInstance();
}
if (isLandscape()) { …Run Code Online (Sandbox Code Playgroud) android screen-orientation android-fragments android-fragmentactivity onrestoreinstancestate
我正在使用谷歌+登录到我的应用程序,当我使用活动完成它的工作魅力,然后我将我的代码移动到一个片段,然后当我尝试登录到谷歌+它不工作我必须打开片段活动2次登录谷歌+任何人都可以告诉我,下面添加了片段的代码发生了什么
public class GooglePluseFragment extends Fragment implements
ConnectionCallbacks, OnConnectionFailedListener {
private static final int RC_SIGN_IN = 0;
private static final String TAG = "MainActivity";
private static final int PROFILE_PIC_SIZE = 800;
private GoogleApiClient mGoogleApiClient;
private boolean mIntentInProgress;
private boolean mSignInClicked;
private ConnectionResult mConnectionResult;
private SignInButton btnSignIn;
private Button btnSignOut;
private Context mContext;
private Activity mActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = getActivity();
mContext = getActivity().getApplicationContext();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View …Run Code Online (Sandbox Code Playgroud) android android-fragments google-plus android-fragmentactivity
I am using a FragmentActivity and sometimes on Crashlytics, I am able to see an exception Fatal Exception: java.lang.RuntimeException: Unable to pause activity
Below is the onPause of my FragmentActivity
@Override
protected void onPause() {
super.onPause();
if (EventBus.getDefault().isRegistered(this))
EventBus.getDefault().unregister(this);
}
Run Code Online (Sandbox Code Playgroud)
Here is the stack trace of this crash.
Fatal Exception: java.lang.RuntimeException: Unable to pause activity {com.avail.easyloans.android/com.avail.easyloans.feature.marketplace.activities.ActivityMarketplace}: java.lang.IllegalStateException: Restarter must be created only during owner's initialization stage
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3471)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3430)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3402)
at android.app.ActivityThread.access$1300(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1416)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157) …Run Code Online (Sandbox Code Playgroud) android android-lifecycle illegalstateexception onpause android-fragmentactivity
绑定服务是否更好FragmentActivity:
bindService(Intent, ServiceConnection, int);
Run Code Online (Sandbox Code Playgroud)
或者Fragment:
getActivity().bindService(Intent, ServiceConnection, int);
Run Code Online (Sandbox Code Playgroud)
什么是更好的做法?