2019年8月22日 星期四

androidx DialogFragment private constructor 報錯問題

https://stackoverflow.com/questions/51831053/could-not-find-fragment-constructor

我在我的DialogFragment裡面加了一個私有constructor, private constructor()
結果在vivo的手機上可以顯示,可是在跳轉到另外一個Activity的時候卻導致閃退
目前只有vivo的手機上測到這個問題,ASUS 三星 小米 模擬器都沒發生這個問題
結論:還是盡量避免寫私有建構子,沒有什麼特別優點只有爽爾以

報錯訊息:java.lang.RuntimeException: Unable to start activity ComponentInfo{/com.xxxxx.Activity.VideoStorageActivity.VideoStorageActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.xxxxx.b.g.f: could not find Fragment constructor
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2982)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1769)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:192)
        at android.app.ActivityThread.main(ActivityThread.java:6839)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
     Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.xxxxx.b.g.f: could not find Fragment constructor
        at androidx.fragment.app.Fragment.instantiate(Fragment.java:8)
        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:1)
        at androidx.fragment.app.FragmentManagerImpl$6.instantiate(FragmentManagerImpl.java:1)
        at androidx.fragment.app.FragmentState.instantiate(FragmentState.java:4)
        at androidx.fragment.app.FragmentManagerImpl.restoreSaveState(FragmentManagerImpl.java:27)
        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:2)
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:3)
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:4)
        at com.xxxxx.Activity.VideoStorageActivity.VideoStorageActivity.onCreate(VideoStorageActivity.kt:1)
        at android.app.Activity.performCreate(Activity.java:7125)
        at android.app.Activity.performCreate(Activity.java:7116)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2935)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1769) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:192) 
        at android.app.ActivityThread.main(ActivityThread.java:6839) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826) 
     Caused by: java.lang.NoSuchMethodException: <init> []
        at java.lang.Class.getConstructor0(Class.java:2320)
        at java.lang.Class.getConstructor(Class.java:1725)
        at androidx.fragment.app.Fragment.instantiate(Fragment.java:4)
        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:1) 
        at androidx.fragment.app.FragmentManagerImpl$6.instantiate(FragmentManagerImpl.java:1) 
        at androidx.fragment.app.FragmentState.instantiate(FragmentState.java:4) 
        at androidx.fragment.app.FragmentManagerImpl.restoreSaveState(FragmentManagerImpl.java:27) 
        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:2) 
        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:3) 
        at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:4) 
        at com.xxxxx.Activity.VideoStorageActivity.VideoStorageActivity.onCreate(VideoStorageActivity.kt:1) 
        at android.app.Activity.performCreate(Activity.java:7125) 
        at android.app.Activity.performCreate(Activity.java:7116) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1220) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2935) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3060) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1769) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:192) 
        at android.app.ActivityThread.main(ActivityThread.java:6839) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826) 

2019年8月13日 星期二

Android LiveData 導入問題

var model=ViewModelProviders.of(this).get(VideoViewModel::class.java)
model.downloadDataLiveData.observe(this, Observer {  })

this過不了他會要求lifecyclerOwner
去更新implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
或者是更新版的

2019年1月29日 星期二

Android Google Map 上架細節(上架後沒有顯示)

Android Google Map上架細節

0.Google Map的導入這個隨便google就有

1.除了你在values的google_maps_api.xml(debug)的key要出入
  還有google_maps_api.xml(release)的key也在輸入,通常切換到project就會找得到


2.如果同時有兩台電腦在測試的話,記得要把兩台的SHA-1碼都要去Google Map Api那邊登記,藍色的那個點兩下跑一下之後就會在下面看到你的SHA-1碼,如果沒有話在google找其他方法


3.如果要測試release的地圖能不能用,記得要把你的keystore檔案的SHA-1碼也去登記
  取得你的keystore的SHA-1碼,通常在api登入那邊有寫
  keytool -list -v -keystore mystore.keystore
  例如我的輸入:keytool -list -v -keystore C:\Users\SERS\Downloads\xxx.keystore
  用一般的CMD或是Android Studio的Terminal都可以

4.這一點最重要當你把你的APK上傳到的google play console之後,在"版本管理"的
  "應用程式簽署"往下拉會看到兩個,"應用程式簽署憑證"和"上傳憑證","應用程式簽署憑證"
  裡面的SHA-1碼也要去Google Map Api裡面登記,至於"上傳憑證"如果你有做第三點的話你會發
  發現那應該就是你的keystore的SHA-1碼


5.google map api的套件名稱輸入欄通常都是一樣,例如我的:com.shang.fcu_food


2018年5月15日 星期二

android montior打開文件權限

 montior打開文件權限
1.打開android studio的模擬器打開cmd cd到2.C:\Users\Shang\AppData\Local\Android\sdk\platform-tools
3.輸入adb shell
4.輸入su 打開root權限
5.chmod 777 /storage/emulated/0

上面的方法好像在6.0以上就不能用了
打開APP的權限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

2017年2月2日 星期四

android bundle

http://blog.csdn.net/android_tutor/article/details/5740845
Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!


http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1211/694.html
Android中如何使用Bundle传递对象[使用Serializable或者Parcelable]


http://cookiesp.pixnet.net/blog/post/84190702-android-intent%26bundle-%E5%82%B3%E9%81%9E%E8%B3%87%E6%96%99(%E5%8C%85%E5%90%AB%E5%82%B3%E9%81%9E%E8%87%AA%E5%AE%9A%E7%BE%A9%E7%89%A9

Android Intent&Bundle 傳遞資料(包含傳遞自定義物件)


static final long serialVersionUID用途

http://fly-dolphin.blogspot.tw/2011/08/static-final-long-serialversionuid.html

2017年2月1日 星期三

android firebase google map 遇到的問題

這行
compile 'com.google.firebase:firebase-database:10.0.1'
跟google map的這行會有衝突到
compile 'com.google.android.gms:play-services:10.0.1'

所以要在前面多加上
compile 'com.google.firebase:firebase-core:10.0.1'

一開始以為是storage的問題,因為顯示error地的是storage的問題
結果另創一個專案再加上google map就沒問題,沒有使用firebase的database
所以才知道是database跟google map可能有衝突到
可能有其他方法解決,例如database降版本

花了一整個下午,都在搞這個太痛苦了......

參考網址:
http://stackoverflow.com/questions/38127053/google-play-services-gcm-9-2-0-asks-to-update-back-to-9-0-0

2017年1月28日 星期六

android firebase

Firebase console
https://console.firebase.google.com/project/testfirebase-6fc4d/database/data?hl=zh-TW&pli=1

在安卓系统中使用Firebase实时数据库 - Firecasts - YouTube
https://www.youtube.com/watch?v=lpFDFK44pX8

在Android中使用2016新版Firebase加快開發過程(一) - 綠豆湯
http://litotom.com/2016/05/20/2016-firebase/

在 Android 上创建存储引用  |  Firebase
https://firebase.google.com/docs/storage/android/create-reference?hl=zh-cn

在 Android 上检索数据  |  Firebase
https://firebase.google.com/docs/database/android/retrieve-data?hl=zh-cn

GitHub - firebase/quickstart-android: Firebase Quickstart Samples for Android
https://github.com/firebase/quickstart-android

Firebase for Android: File Storage
https://code.tutsplus.com/tutorials/firebase-for-android-file-storage--cms-27376

在安卓设备上使用Firebase Storage入门-Firecasts - YouTube
https://www.youtube.com/watch?v=7puuTDSf3pk

Android x Firebase 01 資料庫基礎設定 | Chi Kuo
http://chikuo.tw/android-x-firebase-01-%E8%B3%87%E6%96%99%E5%BA%AB%E5%9F%BA%E7%A4%8E%E8%A8%AD%E5%AE%9A/

Android Studio Tutorial - Firebase Storage - Uploading Images - Part 13 - YouTube
https://www.youtube.com/watch?v=mSi7bNk4ySM

Android Studio Tutorial - Firebase Adding Multiple Objects to database - Part 5 - YouTube
https://www.youtube.com/watch?v=hoF5A30fbu4&index=5&list=PLGCjwl1RrtcTXrWuRTa59RyRmQ4OedWrt

Firebase database - Android Tutorial (1/3) - YouTube
https://www.youtube.com/watch?v=nQwCmW_Gq-Y