我正在尝试使用Dagger2进行DI,它对于有onCreate生命周期事件的Activity/Fragment相关类非常适用.现在我有一个普通的Java类,我想要注入它.任何关于如何去做的想法将不胜感激.我的代码看起来像这样:
BasicMoviesUsecaseComponent.java -
@PerActivity
@Component(dependencies = AppComponent.class, modules = BasicMoviesUsecasesModule.class)
public interface BasicMoviesUsecasesComponent {
void inject(PaymentsManager paymentsManager);
}
Run Code Online (Sandbox Code Playgroud)
DatabaseModule.java -
@Module
public class DatabaseModule {
@Provides @Singleton
Realm provideRealmInstance(Context context) {
return Realm.getInstance(context);
}
@Provides @Singleton
DatabaseProvider provideDatabaseInstance(Realm realm) {
return new DatabaseProvider(realm);
}
@Provides @Singleton
SharedPreferences provideSharedPrefs(Context context) {
return context.getSharedPreferences(context.getPackageName()+"_prefs", Context.MODE_PRIVATE);
}
@Provides @Singleton
SharedPreferencesManager provideSharedPreferencesManager(SharedPreferences sharedPreferences) {
return new SharedPreferencesManager(sharedPreferences);
}
@Provides @Singleton
PaymentsManager providePaymentsManager(SharedPreferencesManager sharedPreferencesManager) {
return new PaymentsManager(sharedPreferencesManager);
}
}
Run Code Online (Sandbox Code Playgroud)
AppComponent.java -
@Singleton
@Component(modules = …
Run Code Online (Sandbox Code Playgroud)
今天我已经将我的android sdk更新为19 api,在测试我的应用程序时,我遇到了19 api中的一些错误:在文本视图中删除一些字体,或者它的大小有问题.
第一个屏幕,一个视图的代码:
tvBalance = new TextView(getContext());
rlParams = new LayoutParams(frame.width, (int) (frame.heigth * zoneExtetn));
rlParams.setMargins(frame.left, (int) (frame.top - frame.heigth * (zoneUp-0.1f)), 0, 0);
tvBalance.setLayoutParams(rlParams);
tvBalance.setGravity(Gravity.CENTER);
tvBalance.setPadding(0, 0, 0, 0);
tvBalance.setTextColor(0xffffd008);
tvBalance.setTextSize(PokerTextSize.scaleFont(getContext(), 28));
tvBalance.setText("$ 0 000 000 000");
tvBalance.setTypeface(TypefaceBase.getCalibri((Activity) getContext()));
rlMoney.addView(tvBalance);
Run Code Online (Sandbox Code Playgroud)
和第二个屏幕代码:
TextView tvText = new TextView(llContent.getContext());
llParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
llParams.setMargins(0, 0, 0, marg*2);
tvText.setLayoutParams(llParams);
tvText.setTextSize(fonts[0]);
tvText.setTextColor(articleColor);
tvText.setText(Html.fromHtml(articleItem.getString()));
tvText.setTypeface(TypefaceBase.getCalibri((Activity) this.getContext()));
llContent.addView(tvText);
Run Code Online (Sandbox Code Playgroud)
有人在android 4.4 kit-kat中有这些问题吗?
我决定尝试一下Volley,所以目前我有很多REST标注要做,所以我通常会创建一个RequestHandler和一个ResponseHandler类,它们的名字分别建议处理请求和响应.我遵循这种模式,所以我不写冗余代码.我只是将动态查询/ url作为参数传递,并使用switch case处理对每个请求的响应.但我坚持以下问题:
我无法从我调用RequestHandler类的地方更新我的UI线程.到目前为止我尝试或已经知道的事情:
我在想,你们是怎么做到的?有没有比我遵循的请求/响应处理程序模式更好的模式?有没有更新UI线程遵循相同模式的方法?
提前致谢 !
我以前使用内容解析器获取联系人列表及其详细信息,但仍然有效我想尝试在后台查询内容提供程序的Loader方法.我在这里查看了文档和示例代码:
http://developer.android.com/training/contacts-provider/retrieve-details.html
虽然我能够毫无问题地显示联系人列表,但我仍然坚持在点击它并在详细信息屏幕上显示特定联系人时检索电话号码.上面的演示在详细屏幕上显示了用户的地址,我甚至尝试修改它.我已将内容URI从Contacts更改为ContactsContract.CommonDataKinds.Phone,但我一直在改进
java.lang.IllegalArgumentException: Invalid column data1
Run Code Online (Sandbox Code Playgroud)
互联网上没有一个详细的教程显示它是如何完成的.这里有人能够善待一些光明吗?阅读各种其他Stackoverflow问题我很确定它与2个不同的CONTENT URI有关,但我又错了.任何帮助或指示将非常感激.谢谢
我已经看过很少的SO问题:
他们都没有解决我的问题.以下是失败的相关代码:
final static String[] PROJECTION = {
Contacts._ID,
Utils.hasHoneycomb() ? ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY : ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
//ContactsContract.CommonDataKinds.Phone.NUMBER,
};
Run Code Online (Sandbox Code Playgroud)
代码工作得很好,但是当我删除注释以获取电话号码时它就失败了
我刚刚开始钻研RxJava/RxAndroid和Retrofit.我喜欢RxAndroid提供的强大功能,但我被困在一个特定的地方,似乎无法找到解决方案.我基本上有一个API,它接受用户并从API获取有关该用户的信息,而这非常有用,我想做的不是返回每个用户的信息,而是单独返回userinfo的arraylist.
Observable.from(interestingUsers) //3 users declared statically for test
.flatMap(user -> gitHubService.getUserData(user))
.observeOn(AndroidSchedulers.mainThread())
.subscribe(gitHubUser -> Log.e("Log", "User data returned : " + gitHubUser.getName()));
Run Code Online (Sandbox Code Playgroud)
上面的代码只是将各个用户记录三次,我想要的是作为单个结果返回的3个用户的列表.
我知道这可能是微不足道的,我无法弄明白.任何帮助,将不胜感激.
Gradle不再查找build.gradle中声明的依赖项.一切都很好,今天当我打开Android Studio时出现错误:
Error:Failed to find: com.readystatesoftware.systembartint:systembartint:1.0.3
Run Code Online (Sandbox Code Playgroud)
引用的库是SystemBarTint.我以前使用相同的build.gradle文件工作,但现在它不再有效.
我的app/build.gradle看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.example.adnan.systembartintdemo"
minSdkVersion 19
targetSdkVersion 19
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
}
Run Code Online (Sandbox Code Playgroud)
我的root/build.gradle看起来像这样:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
// NOTE: Do not place your application dependencies here; they …
Run Code Online (Sandbox Code Playgroud)