小编azi*_*ian的帖子

Dagger 2:避免导出私有依赖项

假设我有一个模块,我只想导出一个实例A.但是,这A需要在构造函数中传递BC传递实例.所以我们也会在模块中声明它们:

public class SampleModule {

    @Provides
    @Singleton
    A provideA(B b, C c){
        return new A(b, c);
    }

    @Provides
    @Singleton
    B provideB(){
        return new B();
    }

    @Provides
    @Singleton
    C provideC(){
        return new C(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作,但现在BC也可在代码的其他地方.我希望将它们保密,并强制客户端类只能访问A.

有没有办法实现这个目标?

java android dependency-injection dagger dagger-2

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

资源ID的整数数组返回0

我有一组存储在数组中的资源ID.这可以在回收器视图中访问以填充图像视图.问题是当我访问数组时,返回的所有值都是0.

// arrays.xml
<array name="array_category_icons">
    <item>@drawable/autumn</item>
    <item>@drawable/backpack</item>
</array>

// inside recycler view adapter
int[] myIcons = getActivity().getResources().getIntArray(R.array.array_category_icons);

myIcons[i] always returns 0. 
Run Code Online (Sandbox Code Playgroud)

drawable只在hdpi文件夹中.

java xml android android-resources android-drawable

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

重复动画后给予延迟

我正在向我的ImageView. 下面是我的动画代码:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:pivotX="70%"
    android:pivotY="70%"
    android:repeatCount="infinite"
    android:startOffset="2000"
    android:repeatMode="reverse"
    android:toXScale="0.8"
    android:toYScale="0.8" />
Run Code Online (Sandbox Code Playgroud)

java代码是:

Animation pulse = AnimationUtils.loadAnimation(this, R.anim.pulse);
reviewImage.startAnimation(pulse);
Run Code Online (Sandbox Code Playgroud)

问题是它在每个动画之后都会产生延迟,例如展开+延迟+折叠+延迟,我只想在一个周期后才给出延迟意味着在展开+折叠+延迟之后

animation android android-animation android-layout android-view

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

如何停止 MediaBrowserServiceCompat?

我的服务:

public class MusicService extends MediaBrowserServiceCompat {
...
}
Run Code Online (Sandbox Code Playgroud)

我的活动:

public class MediaActivity extends AppCompatActivity{
private MediaBrowserCompat mMediaBrowser;
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMediaBrowser = new MediaBrowserCompat(this,
                new ComponentName(this, MusicService.class), mConnectionCallback, null);
        mMediaBrowser.connect();
}

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMediaBrowser.disconnect();
    }
Run Code Online (Sandbox Code Playgroud)

我想在 UI 中添加关闭按钮,但如何停止MusicService?它继续在后台进行投射。

android android-mediaplayer mediabrowserservice mediabrowserservicecompat mediabrowser

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

处理任务时出现异常java.io.ioexception:无法写入或读取

您好我添加了一个新的依赖项,当我尝试运行该应用程序时,我开始收到以下错误:

Warning:Exception while processing task java.io.IOException: Can't write [/Users/paularellano/Documents/Workbench/Android/Huddle/huddle_2.0 updt/Huddle_Android/build/intermediates/transforms/proguard/release/jars/3/1f/main.jar] (Can't read [/Users/paularellano/.android/build-cache/d4e5659d4f4fc411f22ba3f779b09d40beccc03f/output/jars/libs/internal_impl-23.0.1.jar(;;;;;;**.class)] (Duplicate zip entry [internal_impl-23.0.1.jar:android/support/v4/view/WindowInsetsCompat.class]))
Run Code Online (Sandbox Code Playgroud)

我尝试添加排除但我不确定应该排除什么以删除这个重复的罐子,任何帮助将不胜感激!先感谢您!

摇篮:

compileSdkVersion 23
buildToolsVersion '25.0.2'

dependencies {
    compile ('com.google.android.gms:play-services-location:6.5.87') {
        exclude module: 'support-v4'
    }
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:support-v4:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile 'com.google.maps.android:android-maps-utils:0.4'
    compile 'info.hoang8f:android-segmented:1.0.6'

    //expandable recycler view **RECENTLY ADDDED AND GIVES ERROR**
    compile 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1'

    //Testing
    testCompile 'junit:junit:4.12'
    testCompile 'org.robolectric:robolectric:3.1.4'

}
Run Code Online (Sandbox Code Playgroud)

我还在职业防守上添加了这条线,但是没有运气:

-dontwarn com.bignerdranch.**
Run Code Online (Sandbox Code Playgroud)

android dependency-management gradle build.gradle android-gradle-plugin

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

isAttachedToWindow() 返回 false

谁能解释为什么isAttachedToWindow()false而不是true?我似乎有附件问题。

据我了解,setContentView(rl)应该将其附加RelativeLayout到窗户上。我缺少什么?

public class TestActivity extends Activity {
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            final RelativeLayout rl = new RelativeLayout(this);
            setContentView(rl);
            boolean isAttached = rl.isAttachedToWindow();
    }
}
Run Code Online (Sandbox Code Playgroud)

android android-view

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

LifecycleObserver无法正常工作

没有调用Observer方法.我ViewPagerCycler按照旧学校的方式测试并且工作完美.感谢帮助.

public final class ViewPagerCycler implements LifecycleObserver {

    private static final int PERIOD = 3000;

    private Timer mTimer;
    private TimerTask mTask;
    private Activity mActivity;
    private ViewPager mPager;

    public ViewPagerCycler(Activity activity, ViewPager pager) {
        mActivity = activity;
        mPager = pager;
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) public void start() {
        int count = mPager
            .getAdapter()
            .getCount();

        mTimer = new Timer();
        mTask = new TimerTask() {
            @Override public void run() {
                mActivity.runOnUiThread(new TimerTask() {
                    @Override public void run() {
                        mPager.setCurrentItem((mPager.getCurrentItem() + 1) % count, …
Run Code Online (Sandbox Code Playgroud)

android android-lifecycle android-architecture-components

5
推荐指数
2
解决办法
7568
查看次数

使FAB不会被夹在底部导航栏中

我正在尝试将底部导航栏与FAB重叠。我希望我的导航栏看起来像这样:

所需结果

但是相反,它像这样切断了按钮:

当前结果

如何防止FAB被切断?这是我的XML:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mobgen.designsprintapp.ui.main.MainActivity">

    <LinearLayout 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"
        android:orientation="vertical">

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="?android:attr/windowBackground"
            android:backgroundTint="@color/colorPrimary"
            app:itemBackground="@color/colorPrimary"
            app:itemIconTint="@color/nav_item_color_state"
            app:itemTextColor="@android:color/black"
            app:menu="@menu/navigation" >

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/tools"
                android:layout_width="56dp"
                android:layout_height="56dp"
                android:layout_gravity="center"
                android:layout_marginBottom="8dp"
                android:elevation="6dp"
                android:scaleType="center"
                app:srcCompat="@drawable/play" />
            </android.support.design.widget.BottomNavigationView>
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

xml android android-layout android-view floating-action-button

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

Dagger2-DoubleCheck中的重复实例

我将Dagger v2.12与dagger-android-support以下配置一起使用:

AppComponent

@Singleton
@Component(
        modules = arrayOf(
                AndroidSupportInjectionModule::class,
                AndroidBindingModule::class,
                AppModule::class
        )
)
interface AppComponent : AndroidInjector<App> {
    @Component.Builder
    abstract class Builder : AndroidInjector.Builder<App>()
}
Run Code Online (Sandbox Code Playgroud)

AndroidBindingModule

@Module
abstract class AndroidBindingModule {
    @PerActivity
    @ContributesAndroidInjector(modules = arrayOf(MainModule::class))
    internal abstract fun contributeMainActivityInjector(): MainActivity
}
Run Code Online (Sandbox Code Playgroud)

主模块

@Module
class MainModule {

    ...

    @Provides @PerActivity
    fun providePresenter(rxLifecycle: ReactiveLifecycle, view: MainView) =
            MainPresenter(rxLifecycle, view)

}
Run Code Online (Sandbox Code Playgroud)

主要活动

class MainActivity : BaseActivity() {
    @Inject
    lateinit var presenter: MainPresenter

    ...
}
Run Code Online (Sandbox Code Playgroud)

在分析内存转储时,我注意到MainPresenter该类已经创建了两次,其中一个在MainActivitydagger.internal.DoubleCheck(如预期的那样) …

android kotlin dagger dagger-2

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

动态膨胀视图时滚动到底部

我有一个LinearLayout,我正在CardView像这样膨胀一个:

final LinearLayout itineraryDetailLL = (LinearLayout) findViewById(R.id.itineraryDetailLinearlayout);
final View childView = getLayoutInflater().inflate(R.layout.cardview, null);
itineraryDetailLL.addView(childView);
Run Code Online (Sandbox Code Playgroud)

子视图的膨胀是通过单击按钮完成的。每当新的卡片视图膨胀时,我都想滚动到屏幕底部。我是这样做的:

ScrollView scrollview = ((ScrollView) findViewById(R.id.masterScrollView));
scrollview.fullScroll(View.FOCUS_DOWN);
Run Code Online (Sandbox Code Playgroud)

但这会滚动到屏幕中间而不是底部。我究竟做错了什么?

android scrollview android-layout android-scrollview android-view

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