小编Fal*_*ity的帖子

片段必须是要从实例状态正确重新创建的公共静态类

更新到最新的支持存储库后,

compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.android.support:percent:24.2.0'
compile 'com.android.support:recyclerview-v7:24.2.0'
Run Code Online (Sandbox Code Playgroud)

我得到了奇怪的例外.

java.lang.IllegalStateException: Fragment null must be a public static class to be  properly recreated from instance state.
at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:435)
at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:414)
at android.support.v4.app.DialogFragment.show(DialogFragment.java:154)
at com.androidapp.base.BaseActivity.showDialogFragment(BaseActivity.java:78)
at com.androidapp.MainActivity.showNewDialog(MainActivity.java:304)
at com.androidapp.MainActivity$6.onClick(MainActivity.java:228)
Run Code Online (Sandbox Code Playgroud)

在我的BaseActivity类中,我创建了一个可重用的片段,可以在扩展BaseActivty的 activity类中使用

public void showDialogFragment(DialogFragment newFragment) {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
        if (prev != null) {
            ft.remove(prev);
        }
        ft.addToBackStack("dialog");
        newFragment.show(ft, "dialog");
    }
Run Code Online (Sandbox Code Playgroud)

回到MainActivty我用过像这样的片段,

public class MainActivity extends BaseActivity {

    @SuppressLint("ValidFragment")
        public void showNewDialog(int …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-dialogfragment android-support-library fragmentmanager

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

在Android画布上应用缩放效果后,缩放比例位置错误

首先,这是一个最初在这里提出的跟进问题,在Android中平移,缩放和缩放自定义的Canvas绘图视图

由于还没有答案,我终于使用android-gesture-detector解决了我的问题

应用缩放/缩放手势后,我发现,画布绘制坐标仍然指向旧位置(在应用缩放之前),而不是绘制完全相同的触摸坐标.基本上,在缩放或拖动画布后,我无法获得正确的画布坐标.

在缩放之前,

在此输入图像描述

缩小后,触摸点将绘制在之前的位置.我希望它能够在当前触摸位置上绘制,

在此输入图像描述

示例代码,

public class DrawingView extends View {

    private void setupDrawing() {

        mScaleDetector = new ScaleGestureDetector(getContext(), new ScaleListener());

        mgd = new MoveGestureDetector(ctx, mgl);
        sgd = new ScaleGestureDetector(ctx, sgl);
        rgd = new RotateGestureDetector(ctx, rgl);

}

class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            mScaleFactor *= detector.getScaleFactor();
            // Don't let the object get too small or too large.
            mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));
            invalidate();
            return true;
        }
    }

    MoveGestureDetector.SimpleOnMoveGestureListener mgl = new …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-view android-gesture android-touch-event

11
推荐指数
1
解决办法
1280
查看次数

设计带圆角和内阴影的EditText

我正在尝试创建一个包含圆角和内阴影的自定义EditText.

在此输入图像描述

我创建了一个创建内部阴影的图层列表,

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item >
        <shape android:shape="rectangle">
            <solid android:color="#6C6C6C" />           
        </shape>
    </item>

    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/ashes" />   
        </shape>
    </item>

    <!-- White Top color -->
    <item android:top="3px" android:left="3px">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />           
        </shape>
    </item> 
</layer-list>
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样,

在此输入图像描述

我怎样才能添加圆形?

android android-ui android-layout

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

在Android中单击按钮后,使布局显示动画

我正在尝试为登录屏幕实现一个简单的动画效果.

这是场景,

1:默认情况下会显示一些文本和登录按钮.

2:单击登录按钮后,将从下到上显示新的框架布局.此布局将提示用户输入其用户名和密码.

我可以制作一个从父母到另一个父母重叠的动画.在这种情况下,我正在寻找一个不会离开活动就会出现的动画.

android android-animation

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

在Android中的多个视图上同时触摸事件处理

考虑下图中的示例,

在此输入图像描述

我正在寻找一种解决方案,将触摸事件从画布View传递给Viewpager.这对于同时在两个视图上应用相同数量的缩放是必要的.

这是对正在发生的事情的技术描述,

(让我们将视图视为A,BC)

A.父母观点

B.观点

C.查看寻呼机

在子项(B&C)上调用dispatchTouchEvent()之前,A.dispatchTouchEvent()将首先调用A.onInterceptTouchEvent()以查看视图组是否有兴趣拦截事件.

因此,如果A.onTouchEvent()返回false,则返回到B.onTouchEvent().如果返回false,则返回到C.onTouchEvent()并继续照常调度.

返回真实时,

  1. ACTION_CANCEL将被派遣给所有孩子.

  2. 如果已定义,则事件侦听器(OnTouchListener.onTouch())将使用所有后续手势事件(直到ACTION_UP/ACTION_CANCEL),否则将在A级别使用事件处理程序A.onTouchEvent().

在这一点上我可以从父到子视图传递事件,但不能让孩子2视图.&C一起处理事件(在两个视图上应用相同数量的缩放).

有没有办法将触摸事件从父视图传递给子视图,以便他们可以同时处理事件?

这是我的布局设置,

<RelativeLayout
    android:id="@+id/layoutParent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFFFF">

            <com.androidapp.NonSwipeableViewPager
                android:id="@+id/pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:background="@color/transparent" />

            <com.androidapp.DrawingView
                android:id="@+id/drawing"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/transparent" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

android android-view android-viewpager android-touch-event

6
推荐指数
1
解决办法
2262
查看次数

在Android Kotlin中将大小定义为自定义数组类型

如何定义任何基于自定义组件的数组(如ImageView)的大小

我尝试了以下代码与类型不匹配错误,

    private var dots: Array<ImageView>? = null
    dots = arrayOfNulls<ImageView>(size)
Run Code Online (Sandbox Code Playgroud)

这是实际的Java代码,

private ImageView[] dots;
dots = new ImageView[dotsCount];
Run Code Online (Sandbox Code Playgroud)

android kotlin

2
推荐指数
1
解决办法
1291
查看次数

sqllite选择行,直到满足一列的总金额

我已经看到与mysql类似的问题,但是我几乎找不到与sqllite有关的任何解决方案。

我的样品台

-----------------------------
ID   | Product Name   | Price
-----------------------------
1            A           2
2            B           2
3            C           1
4            D           3
5            E           2
Run Code Online (Sandbox Code Playgroud)

在这里,我需要获取行,直到价格列的总数按升序等于或小于5。

sqlite

1
推荐指数
1
解决办法
596
查看次数

在Android中使用Math.log

我正在尝试计算这个公式,

i = (495 / (1.0324 - 0.19077 * (Math.log(76.2 - 25.4)) + 0.15456 * (Math.log(170.18))) - 450);
Run Code Online (Sandbox Code Playgroud)

而不是给出20.6的正确答案,它显示错误的答案9.59!

然后我发现Math.log函数输出错误!如何在Android中计算这样的操作?

java android logarithm

0
推荐指数
1
解决办法
3079
查看次数