我有一个包含两个片段的活动.
activity(MainActivity)从开放的天气api中检索数据.我已经实现MVP此,其中:
Model包含所有响应对象从API
View是Activity
Presenter包含MainPresenter,MainPresenterImpl,MainView,GetDataInteractor和GetDataInteractorImpl.
因此,活动从Web服务获取数据.两个片段都将显示活动中检索到的数据中的数据.
在这种情况下使用MVP的最佳做法是什么?我知道如何通过接口/回调在片段< - >活动之间传递数据,我的问题是在实现MVP时这种行为会改变吗?
我一直在研究一个项目,当我在android studio中运行它时,它运行正常,当我在调试模式下运行时,它运行正常.
突然之间,当我尝试正常运行项目时,它会在设备上弹出,等待调试器
在logcat我得到这个:
02-07 10:38:46.444 3968-3968/com.geog.test D/dalvikvm? Late-enabling CheckJNI
02-07 10:38:46.784 3968-3968/com.geog.test W/ActivityThread? Application com.geog.visitdub is waiting for the debugger on port 8100...
02-07 10:38:46.804 3968-3968/com.geog.test I/System.out? Sending WAIT chunk
Run Code Online (Sandbox Code Playgroud)
它不会再进一步了.我不知道为什么会发生这种情况,清单中没有调试命令,我已经杀死了adb并重新启动,就像我在android studio中所做的那样.
这是一个真正的痛苦,因为我无法通过调试模式运行应用程序.如果有人有任何想法,我想听听他们
谢谢
我正在研究一个项目,我需要能够使用每个片段中的后退按钮在之前的片段之间导航,我有使用操作栏中的后退箭头编写的方法,但是,我希望能够按下后退按钮使用相同的功能.我不想使用后台堆栈.有没有办法做到这一点?
编辑
我希望能够在用户单击后退按钮时调用返回上面的方法,而不是使用后台堆栈.我需要在片段中使用gobackpressed方法.这可能吗?我希望这清楚而简洁.对上面引起的任何混淆道歉.
回到上一页
public void gobackToPreviousFragment(String preFragmentTag, Fragment preFragment){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.close_slide_in,R.animator.close_slide_out);
ft.show(preFragment);
//**BY REMOVING FRAGMENT, WHEN USER TRIES TO REVISIT, FRAGMENT IS BLACK**
ft.remove(fm.findFragmentByTag(Misc.currentContentFragmentTag));
ft.addToBackStack(null);
ft.commit();
Misc.currentContentFragmentTag = preFragmentTag;
createBar(preFragment);
}
Run Code Online (Sandbox Code Playgroud)
直走
public void gotoNextFragment(String nextTag, Fragment nextFragment){
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.enter_slide_in, R.animator.enter_slide_out);
boolean newlyCreated = false;
if(nextFragment == null){
nextFragment = Fragment.instantiate(this, nextTag);
newlyCreated = true;
}
//hide current fragment
ft.hide(fm.findFragmentByTag(Misc.currentContentFragmentTag));
if(newlyCreated){
ft.add(R.id.content_frame, nextFragment, nextTag);
} …Run Code Online (Sandbox Code Playgroud) 我通过crashlytics从用户体验中得到一些报告给我一个错误
Fatal Exception java.lang.NullPointerException
CameraUpdateFactory is not initialized
Run Code Online (Sandbox Code Playgroud)
这不是常规崩溃,因为它不是每个用户都会发生,但它变得过于规则,我需要解决它.
我曾经读过,如果地图尚未初始化,我认为我已经覆盖过这种情况
if(googleMap!=null){
googleMap.animateCamera(CameraUpdateFactory.newLatLng(selectedLatLng));
}
Run Code Online (Sandbox Code Playgroud)
也可能是因为谷歌播放服务不在设备上或已经过时,我也为此添加了一些验证.
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(FuelsFragment.this.getActivity());
// Showing status
//CAMERAUPDATE FACTORY CRASH CAN BE A RESULT OF GOOGLE PLAY SERVICES NOT INSTALLED OR OUT OF DATE
//ADDITIONAL VERIFICATION ADDED TO PREVENT FURTHER CRASHES
//https://github.com/imhotep/MapKit/pull/17
if(status == ConnectionResult.SUCCESS)
{
mMapFragment = ReepMapFragment.newInstance();
FragmentTransaction fragmentTransaction = getChildFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.mapContainer, mMapFragment);
fragmentTransaction.commit();
}
else if(status == ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED){
reep.toastNotify("You need to update Google Play Services in order …Run Code Online (Sandbox Code Playgroud) 我正在尝试将espresso集成到我的ui测试应用程序中.这是我在Gradle中的依赖项
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.1'
compile 'com.github.bumptech.glide:okhttp-integration:1.3.1@aar'
compile 'com.squareup.okhttp:okhttp:2.0.0'
compile 'de.hdodenhof:circleimageview:1.3.0'
compile 'com.android.support:cardview-v7:21.+'
compile 'com.android.support:recyclerview-v7:21.+'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2'
compile 'com.android.support:support-annotations:22.2.0'
androidTestCompile 'com.android.support.test:runner:0.3'
compile project(':common')
compile project(':service')
}
Run Code Online (Sandbox Code Playgroud)
所以我的espresso依赖项都包括在内.但是,当我尝试构建时,我收到此错误:
Warning:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (22.2.1) and test app (22.2.0) differ.
有没有遇到过这个?我发现它在这里报道但是没有解决方案.有人有解决方法吗?
我有一个快速的问题.我正在努力(并努力)用MVP设计模式设计我的应用程序.
我可以问,对于每个视图(活动,片段)我应该有一个单独的演示者类吗?
我在网上看到的资源并不多,显然有样本说明了MVP.如果他们有一些人可以共享吗?
PS我也在这个应用程序中使用RecyclerViewAdapter所以任何关于它的指针将不胜感激
提前致谢
我在演示项目中使用改装库进行调用.
我收到以下错误:
java.lang.NumberFormatException:期望一个int,但在第1行第8454行是0.6.路径$ .result.results.ads [2] .acres
我认为这归功于GSON.
我会告诉你它被抓到的JSON:
{
"ad_id":739580087654,
"property_type":"site",
"house_type":"",
"selling_type":"private-treaty",
"price_type":"",
"agreed":0,
"priority":2,
"description":"Beautiful elevated 0.6 acre site - zoned residential - and within easy walk to this popular and scenic coastal village\r\n\r\n\r\nthe site area is zoned residential ( i.e. can be constructed on for residential home) and has beautiful coastal views\r\n\r\nSpiddal is an exceptionally popular location , just 8 miles west of Galway City but the area has not been over developed.\r\n\r\nAll services and family amenities …Run Code Online (Sandbox Code Playgroud) 目前我已经设置了我的Android应用程序,以便用户可以通过Facebook登录该应用程序.但是,我希望能够为用户提供在Facebook注册的选项,但是,似乎没有任何关于此的文档.我已经在网上搜寻了,我找不到任何东西.
有谁知道如何实现这一点,甚至让我走上正确的道路?请不要将我链接到fb开发者应用程序,因为我找不到与此相关的任何内容.
提前致谢!!
我在我的应用程序上运行了proguard工具来进行混淆.我知道,当混淆发生时,proguard会缩小并优化应用程序.因此,在混淆应用程序正确打开后,然后当我尝试登录时崩溃.我得到的最好的是这个日志,因为我连接了设备.
10-03 11:12:47.384: E/AndroidRuntime(15058): FATAL EXCEPTION: AsyncTask #1
10-03 11:12:47.384: E/AndroidRuntime(15058): java.lang.RuntimeException: An error occured while executing doInBackground()
10-03 11:12:47.384: E/AndroidRuntime(15058): at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.FutureTask.run(FutureTask.java:239)
10-03 11:12:47.384: E/AndroidRuntime(15058): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-03 11:12:47.384: E/AndroidRuntime(15058): at java.lang.Thread.run(Thread.java:856)
10-03 11:12:47.384: E/AndroidRuntime(15058): Caused by: java.lang.ExceptionInInitializerError
10-03 11:12:47.384: E/AndroidRuntime(15058): at com.winwin.a.d.c.doInBackground(Unknown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058): at com.winwin.a.d.c.doInBackground(Unknown Source)
10-03 11:12:47.384: E/AndroidRuntime(15058): at …Run Code Online (Sandbox Code Playgroud) 我一直在努力将Google Analytics v4集成到我的应用程序中.我已按照此操作:https://developers.google.com/analytics/devguides/collection/android/v4/但是,我的分析仪表板未显示任何数据.
以下是我在应用程序文件中设置的方法:
private static final String PROPERTY_ID = "UA-*******-*";
public enum TrackerName {
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}
public synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker(PROPERTY_ID)
:(trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
: …Run Code Online (Sandbox Code Playgroud) android google-analytics android-fragments google-analytics-firebase