小编Dav*_*jak的帖子

启动Intent for activity-alias

我为具有不同元数据的活动设置了一些别名.

在这个元数据中,我设置了片段的名称,然后我通过反射加载它.
我不知道这是否是一个"干净"的解决方案,虽然通过使用Fragments并将功能放入其中我只有一个SuperActivity和2个空SubActivities来指定清单中的每个.

现在的问题是:我可以通过Intent启动别名吗?new Intent(Context, Class)将无法正常工作,因为我找不到通过intent调用设置元数据的方法.

我需要启动一个Intent <activity android:name="XXX"/>,有一个简单的方法吗?

通用活动及其别名,我需要后者的新意图:

    <activity
        android:name="ActivityList"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <meta-data
            android:name="android.app.default_searchable"
            android:value="ActivityListItem" />
        <meta-data
            android:name="fragment"
            android:value="FragmentLocationList" />
    </activity>

    <activity-alias
        android:name="ActivityListItem"
        android:label="@string/locations"
        android:parentActivityName="ActivityList"
        android:targetActivity="ActivityList" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        <meta-data
            android:name="android.app.default_searchable"
            android:value="ActivityListItem" />
        <meta-data
            android:name="fragment"
            android:value="FragmentItemList" />
    </activity-alias>
Run Code Online (Sandbox Code Playgroud)

java android android-intent

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

如何使用dagger2设置和获取模型类的Singleton对象?

我有什么选项可以在Android应用程序中创建所有模型类的单个实例?

我在下面添加了一个示例模型类

public class User
{
    private String email;
    private String name;
    public String getEmail()           {  return this.email;    }
    public void setEmail(String email) {  this.email = email;   }
    public String getName()            {  return this.name;    }
    public void setName(String name)   {  this.name = name;   }
}
Run Code Online (Sandbox Code Playgroud)

我希望一旦数据存储在Model Class中,就可以在任何活动,类或片段中检索它.我应该使用单身人士,还是有更好的方法?

dagger2会在这种情况下工作吗?dagger2是创建单身人士的替代方案吗?

谢谢

design-patterns dagger dagger-2

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

Dagger 2创建的对象在Android中保留多长时间/ Dagger 2如何与Android Activity生命周期一起玩?

假设我们有一个@Singleton应用程序模块,它创建并返回一个Hashmap用于存储配置数据的模块.如果配置数据在hashmap中被修改并且android应用程序进入后台并且让我们说onPause()和onStop()被调用.

  • 是否会破坏由dagger创建的hashmap?
  • 如果应用程序返回到前台,那么添加到hashmap的现有配置数据是否仍然存在?

android dagger-2

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

Dagger Component具有相互矛盾的范围

我正在使用Dagger,我有一个带有@Singleton范围的app组件,还有一个带有@Singleton范围的子组件.现在,当我编译它时,我收到此错误:

[io.droid.nowtellapp.dagger.SignInMvpComponet] io.droid.nowtellapp.dagger.SignInMvpComponet有相互冲突的范围:io.droid.nowtellapp.dagger.ApplicationComponent也有@Singleton

要解决此错误,我@Singleton从子组件中删除并编译它,这次出现此错误:

错误:(12,1)错误:io.droid.nowtellapp.dagger.SignInMvpComponet(unscoped)可能不引用范围绑定:@Singleton @Provides io.droid.nowtellapp.mvp.SignInMvp.Presenter io.droid.nowtellapp.dagger. SignInMvpModule.presenter(io.droid.nowtellapp.webservices.NowTellApi)

也出现此错误:

错误:(21,8)错误:[ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor无法处理此类,因为并非所有依赖项都可以解析.使用生成的代码检查编译错误或循环依赖性.

这是我的ApplicationComponent

@Singleton
@Component(modules = {AppModule.class, RetroApiModule.class})
public interface ApplicationComponent {

void inject(MainActivity mainActivity);

SignInMvpComponet signInMvpComponet(SignInMvpModule signInMvpModule);
}
Run Code Online (Sandbox Code Playgroud)

这是我的SignInMvpComponet

@Subcomponent(modules = {SignInMvpModule.class})
public interface SignInMvpComponet {
void inject(SignInFragment signInFragment);
Run Code Online (Sandbox Code Playgroud)

这是SignInMvpModule类

@Module
public class SignInMvpModule {
private final SignInMvp.View view;

public SignInMvpModule(SignInMvp.View view) {
    this.view = view;
}

@Singleton
@Provides
SignInMvp.Presenter presenter(NowTellApi api) {
    return new SignInPresenter(view,api);
}
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?提前致谢.

java android dependency-injection dagger-2

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

使用支持片段时fragmentDispatchingAndroidInjector

我正在尝试使用支持v4片段创建一个简单的匕首2应用程序.修改我的应用程序后,我得到了这个奇怪的编译错误

Error:(35, 8) error: [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.support.v4.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>>> cannot be provided without an @Provides-annotated method.
java.util.Map<java.lang.Class<? extends android.support.v4.app.Fragment>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>>> is injected at
dagger.android.DispatchingAndroidInjector.<init>(injectorFactories)
dagger.android.DispatchingAndroidInjector<android.support.v4.app.Fragment> is injected at
app.series.com.tvshowsapplication.ui.main.MainActivity.fragmentDispatchingAndroidInjector
app.series.com.tvshowsapplication.ui.main.MainActivity is injected at
dagger.android.AndroidInjector.inject(arg0)
Run Code Online (Sandbox Code Playgroud)

快速搜索后,我找到了这个链接.它说我需要使用

事情是我不明白我应该把这部分放在哪里

@Multibinds
abstract Map<Class<? extends android.app.Fragment>, AndroidInjector.Factory<? extends android.app.Fragment>> bindNativeFragments();
Run Code Online (Sandbox Code Playgroud)

我的猜测我需要将它放在BaseActivity中,因为它是一个抽象函数,但我如何在主活动中实现它?

我的主要活动:

public class MainActivity extends BaseActivity<ActivityMainBinding, MainViewModel> implements MainNavigator, HasSupportFragmentInjector {

    @Inject
    ViewModelProvider.Factory mViewModelFactory;

    @Inject
    DispatchingAndroidInjector<Fragment> fragmentDispatchingAndroidInjector;

    private MainViewModel mMainViewModel;

    private DrawerLayout mDrawer;
    private Toolbar mToolbar;
    private NavigationView mNavigationView;
// …
Run Code Online (Sandbox Code Playgroud)

android fragment android-fragments dagger

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

注射后为什么我的字段为"null"?我如何注射我的物体?

这是一个典型问题,因为对Dagger 2的对象初始化存在很多误解.

如果您的问题被标记为重复,请仔细阅读本文,并确保了解构造函数注入和现场注入之间的区别.

我尝试向Context我的演示者注入一个,但在尝试使用它时我得到一个NullPointerException.

class MyPresenter {

  @Inject Context context;

  private MyView view;

  @Inject
  MyPresenter(MyView view) {
    this.view = view;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的模块看起来像这样

@Module
class MyModule {

  @Provides
  MyPresenter provideMyPresenter(MyView view) {
    return new MyPresenter(view);
  }
}
Run Code Online (Sandbox Code Playgroud)

我在这里的活动中注入了演示者:

class MyActivity extends Activity {

  @Inject MyPresenter presenter;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    createMyActivityComponent().inject(this);
  }
}
Run Code Online (Sandbox Code Playgroud)

android dagger-2

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

插件太旧,请更新到更新版本,或设置ANDROID_DAILY_OVERRIDE环境变量

在运行我的项目时显示此错误,我尝试了所有可用的解决方案,但它不起作用.唯一剩下的就是设置ANDROID_DAILY_OVERRIDE环境变量,但我很难这样做.

我如何ANDROID_DAILY_OVERRIDE在mac上设置环境变量?

android build.gradle

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

定期同步从不触发

SyncAdapter用于一些服务器客户端同步.在官方的android开发者指南中,提到了触发同步的不同方法.

1服务器数据更改时运行同步适配器

你只需致电:

ContentResolver.requestSync(ACCOUNT, AUTHORITY, null);
Run Code Online (Sandbox Code Playgroud)

服务器数据更改时(例如,在GCM上).

2内容提供程序数据更改时运行同步适配器

只需使用一个 ContentObserver

public class TableObserver extends ContentObserver {
    @Override
    public void onChange(boolean selfChange) {
        onChange(selfChange, null);
    }

    @Override
    public void onChange(boolean selfChange, Uri changeUri) {
        ContentResolver.requestSync(ACCOUNT, AUTHORITY, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

3在网络消息之后运行同步适配器

请执行下列操作:

ContentResolver.setSyncAutomatically(ACCOUNT, AUTHORITY, true)
Run Code Online (Sandbox Code Playgroud)

现在,每当有开放的TCP/IP连接时,SyncAdapter都会触发执行同步.

4定期运行同步适配器

这对我来说是重要而有趣的部分.为此你只需要这样做(至少这是在开发人员指南中写的):

public static final long SECONDS_PER_MINUTE = 60L;
public static final long SYNC_INTERVAL_IN_MINUTES = 60L;
public static final long SYNC_INTERVAL = SYNC_INTERVAL_IN_MINUTES * SECONDS_PER_MINUTE;

ContentResolver.addPeriodicSync(
            ACCOUNT,
            AUTHORITY,
            Bundle.EMPTY,
            SYNC_INTERVAL); …
Run Code Online (Sandbox Code Playgroud)

android android-syncadapter

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

MultiDexApplication不实现HasActivityInjector

我使用New Android Injector和Dagger 2通过https://medium.com/@iammert/new-android-injector-with-dagger-2-part-1-8baa60152abe

在MultiDex支持之前,App已经发挥作用.我已经为app/build.gradle和AndroidManifest.xml添加了multidex支持.在MultiDex支持之后,我通过安装在设备上获得了错误logcat

致命异常:主java.lang.RuntimeException:无法启动活动ComponentInfo {com.eusecom.samfantozzi/com.eusecom.samfantozzi.Detail2Activity}:java.lang.RuntimeException:android.support.multidex.MultiDexApplication未实现dagger.android .AasActivityInjector在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)在android.app.ActivityThread.access $ 700(ActivityThread.java:159)在android .app.ActivityThread $ H.handleMessage(ActivityThread.java:1316)位于android.app的android.os.Handler.dispatchMessage(Handler.java:99)android.os.Looper.loop(Looper.java:137). ActivityThread.main(ActivityThread.java:5419)位于java.lang.reflect.Method.invokeNative(Native Method),位于com.android.internal.os的java.lang.reflect.Method.invoke(Method.java:525).在dalvik的com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)的ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187).system.NativeStart.main(Native Method)引起:java.lang.RuntimeException:android.support.multidex.MultiDexApplication没有在dagger.android.AndroidInjection.inject(AndroidInjection.java:48)中实现dagger.android.HasActivityInjector com.usecom.samfantozzi.Detail2Activity.onCreate(Detail2Activity.java:19)在android.app.Isttrumentation.callActivityOnCreate(Instrumentation.java:1104)的android.app.Activity.performCreate(Activity.java:5372)android.app Android.app.ActivityThread $ H的android.app.ActivityThread.access $ 700(ActivityThread.java:159)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)的.ActivityThread.performLaunchActivity(ActivityThread.java:2257) .handleMessage(ActivityThread.java:1316)在android.app.Handler.dispatchMessage(Handler.java:99)android.app.Looper.loop(Looper.java:137)android.app.ActivityThread.main(ActivityThread. java:5419)在java.lang.reflect.Method.invo的java.lang.reflect.Method.invokeNative(Native Method)ke(Method.java:525)位于dalvik的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) .system.NativeStart.main(Native方法) 

我的App.java

public class SamfantozziApp extends MultiDexApplication implements HasActivityInjector {

@Inject
DispatchingAndroidInjector<Activity> activityDispatchingAndroidInjector;

public RxBus _rxBus;

@NonNull
private DatabaseReference mDatabaseReference;

@Override
public void onCreate() {
    super.onCreate();

    if (LeakCanary.isInAnalyzerProcess(this)) {
        // This process is dedicated to LeakCanary for heap analysis.
        // You should not init your app in this process.
        return; …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

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

Dagger 2 - 我应该使用单身Realm实例吗?

我正在使用Dagger 2为整个应用程序提供单例Realm实例(所有数据访问对象都使用单个域).但是,据我所知,Realm可以使用多实例Realm.getInstance(),我们必须在完成它们时关闭每个实例,如Realm docs所示:

    /**
     * Closes the Realm instance and all its resources.
     * <p>
     * It's important to always remember to close Realm instances when you're done with it in order not to leak memory,
     * file descriptors or grow the size of Realm file out of measure.
     *
     * @throws IllegalStateException if attempting to close from another thread.
     */
    @Override
    public void close() {
        if (this.threadId != Thread.currentThread().getId()) {
            throw new IllegalStateException(INCORRECT_THREAD_CLOSE_MESSAGE);
        }

        if …
Run Code Online (Sandbox Code Playgroud)

android realm dagger-2

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

Android XML 设计(布局)使我的应用程序变慢

我为我的应用程序做了一个设计,但它运行得非常慢。我想要达到的结果是这样的:

在此处输入图片说明

到目前为止,我已经能够用这个 xml 实现这个结果:

<FrameLayout 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"
tools:context="com.example.asteam.unify.Mbajtje">

<ScrollView
    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"
    android:fillViewport="true"
    android:layout_marginRight="@dimen/general_margin"
    android:layout_marginLeft="@dimen/general_margin">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/lendaText"
            android:layout_marginTop="@dimen/general_margin"
            android:text="Lënda:"/>

        <Spinner
            android:id="@+id/lendaMbajtje"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/lendaText"
            android:textSize="@dimen/font_size"
            android:background="@drawable/border_bottom"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/subjektiText"
            android:layout_marginTop="@dimen/general_margin"
            android:layout_below="@id/lendaMbajtje"
            android:text="Subjekti:"/>

        <Spinner
            android:id="@+id/subjektiMbajtje"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/subjektiText"
            android:textSize="@dimen/font_size"
            android:background="@drawable/border_bottom"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/subjektiMbajtje"
            android:id="@+id/detajetMbajtjesText"
            android:orientation="horizontal">

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_marginRight="@dimen/general_margin"
                android:layout_weight="3">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="15dp"
                    android:layout_weight="1"
                    android:text="Data e mbajtjes:"/>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_weight="1"
                    android:id="@+id/dates"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="3dp"
                    android:orientation="horizontal">

                    <EditText
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/dayMbajtje"
                        android:background="@drawable/border_bottom" …
Run Code Online (Sandbox Code Playgroud)

java xml android

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

Android中的fill_parent如何实际工作?

我认为fill_parent有很大的价值,我想自己实现它,所以我可以做的不仅仅是填充剩余的空间(例如:填充80%的剩余空间等)

fill_parent实际上如何在引擎盖下工作?如何计算剩余空间,它如何在运行时工作等.

我在过去做过类似的事情,fill_parent根据当前的屏幕大小,元素应该占用的屏幕大小等来计算元素应该占用的空间等等.但我想知道Android是如何做到的与fill_parent.

android android-layout

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

服务是否独立于活动生命周期?

是一个Service独立的Activity生命周期吗?即使活动被终止,它还会继续运行吗?

android android-service android-activity

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