为什么视图没有更新?

时间:2019-02-12 13:43:12

标签: java android

我正在构建一个具有2个片段容器并具有屏幕截图功能的应用程序。 问题是每当2个片段容器之一更新为另一个片段(已替换),而我正在截屏时显示的是以前的片段而不是更新的片段。

我在活动的另一个片段中使用getView().getRootView()来截取屏幕截图。 为什么会发生任何建议?

2 个答案:

答案 0 :(得分:0)

请对该问题进行详细说明或尝试添加代码。

如果您不使用FrameLayout,请使用它。

添加FrameLayout的代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/your_placeholder"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"></FrameLayout>

</android.support.constraint.ConstraintLayout>

要添加或替换新的Fragment,请使用FragmentTransaction。

// Code inside the onCreate method
getSupportFragmentManager().beginTransaction()
               .replace(R.id.your_placeholder, new TheOtherFragment())
               .commit();

要进行屏幕截图:

View view = findViewById(R.id.your_placeholder);
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap screenshot = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);

答案 1 :(得分:0)

要进行屏幕截图:

SELECT DISTINCT ON (a.user_id)
       a.*
FROM
(
    SELECT  user_id
            , count(*) OVER(PARTITION BY user_id)
    FROM some_table
) a