0

Immer wenn ich versucht habe, die Aktivität (include viewpager) in WindowManager einzufügen, stürzt sie ab und der obige Fehler ist aufgetreten. Ich probierte die Lösung wie setId für viewpager und create custom viewpager, um den setAdapter faul aufzurufen, aber leider stürzt es immer noch ab. Von dem, was ich vermute, ist der Adapter, der dieses Problem verursacht, wenn setContentview nicht genannt wird, aber ich habe keine Ahnung wie und warum. Jede Hilfe wäre willkommen.Keine Ansicht gefunden für ID 0x7f0f0085 (lockscreen_viewpager) für Fragment LockscreenDefaultFragment {b73c8bb # 0 id = 0x7f0f0085}

EDIT 1: Wenn wir setContentView nicht verwendet haben, wie kann dann der viewpager-Adapter die Ansicht darin finden?

LockScreenActivity

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    lockView = View.inflate(this, R.layout.activity_lockscreen, null); 

    mViewPager = (ViewPager) lockView.findViewById(R.id.lockscreen_viewpager); 
    mPageAdapter = new LockscreenAdapter(getSupportFragmentManager()); 
    mViewPager.setPageTransformer(true, new ZoomOutPageTransformer(mViewPager)); 
    mViewPager.setAdapter(mPageAdapter); 
    mViewPager.setCurrentItem(1); 
    mViewPager.addOnPageChangeListener(this); 

    mLockUtil = LockLayer.getInstance(this); 
    mLockUtil.setLockView(lockView); 
    mLockUtil.lock(); 


    ImageView wallpaper = (ImageView) lockView.findViewById(R.id.activity_lockscreen_wallpaper); 
    final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this); 
    BitmapDrawable wallpaperDrawable = ((BitmapDrawable) wallpaperManager.getDrawable()); 
    if (wallpaperDrawable != null) { 
     try { 
      wallpaper.setImageBitmap(wallpaperDrawable.getBitmap()); 
     } catch (IOError ignored) { 
     } 
    } 
} 

LockscreenAdapter erstreckt FragmentStatePagerAdapter

private List<Fragment> mItems = new ArrayList<>(); 

public LockscreenAdapter(FragmentManager fm) { 
    super(fm); 
    populate(); 
} 

private void populate() { 
    mItems.clear(); 
    mItems.add(LockscreenDefaultFragment.newInstance(LockscreenFragment.PAGE_DEFAULT)); 
    mItems.add(LockscreenFragment.newInstance(LockscreenFragment.PAGE_LOCK)); 
    mItems.add(LockscreenDefaultFragment.newInstance(LockscreenFragment.PAGE_DEFAULT)); 
} 

@Override 
public Fragment getItem(int position) { 
    return mItems.get(position); 
} 

@Override 
public int getCount() { 
    return mItems.size(); 
} 

LockLayer

public static synchronized LockLayer getInstance(Activity act){ 
    if(mLockLayer == null){ 
     mLockLayer = new LockLayer(act); 
    } 
    return mLockLayer; 
} 

private LockLayer(Activity act) { 
    mActivty = act; 
    init(); 
} 

private void init(){ 
    isLocked = false; 
    mWindowManager = mActivty.getWindowManager(); 
    mLockViewLayoutParams = new LayoutParams(); 
    mLockViewLayoutParams.width = LayoutParams.MATCH_PARENT; 
    mLockViewLayoutParams.height = LayoutParams.MATCH_PARENT; 
    mLockViewLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR; 
} 
public synchronized void lock() { 
    if(mLockView!=null && !isLocked){ 
     mWindowManager.addView(mLockView, mLockViewLayoutParams); 
    } 
    isLocked = true; 
} 
public synchronized void unlock() { 
    if(mWindowManager!=null && isLocked){ 
     mWindowManager.removeView(mLockView); 
    } 
    isLocked = false; 
} 
public synchronized void setLockView(View v){ 
    mLockView = v; 
} 

Antwort

0

Nachdem ich versucht habe, viewpager in windowmanager einzubauen, ist die einzige Möglichkeit für mich, den FragmentStatePagerAdapter in PagerAdapter zu ändern, wenn immer der FragmentStatePagerAdapter verwendet wird, es scheint immer das Fragment aus der root-Ansicht zu suchen der Absturz.

Verwandte Themen