いくつかの特定のデバイスでクラッシュするために次のスタックトレースを取得しています。私が述べたリソースが私のR.java、私は自分自身を定義した基本的にない資源で
public static final int design_tint_password_toggle=0x7f0f007c;
あるOSv5.1
Fatal Exception: android.view.InflateException: Binary XML file line #161: Error inflating class com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88)
at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88)
at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by android.content.res.Resources$NotFoundException: Resource ID #0x7f0f007c
at android.content.res.Resources.getValue(Resources.java:1463)
at android.support.v7.content.res.AppCompatResources.isColorInt(AppCompatResources.java:161)
at android.support.v7.content.res.AppCompatResources.inflateColorStateList(AppCompatResources.java:108)
at android.support.v7.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:74)
at android.support.v7.widget.TintTypedArray.getColorStateList(TintTypedArray.java:136)
at android.support.design.widget.TextInputLayout.(TextInputLayout.java:244)
at android.support.design.widget.TextInputLayout.(TextInputLayout.java:183)
at com.adroitandroid.stitchastory.ui.TextInputLayoutPlus.(TextInputLayoutPlus.java:19)
at com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus.(AppTextInputLayoutPlus.java:16)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88)
at com.adroitandroid.stitchastory.HomeActivity$StartStoryFragment.onCreateView(HomeActivity.java:415)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2184)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1298)
at android.support.v4.app.FragmentManagerImpl.moveFragmentsToInvisible(FragmentManager.java:2323)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2136)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:709)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5763)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
を実行している上でのクラッシュに直面したデバイスの両方。しかし、それは私がここで膨張しようとしているカスタムレイアウトです。このような前回のクラッシュについては、xmlでテキストの色を明示的に言及して修正しました。しかし、これはそれが見つけることができないアンドロイドリソースである点で異なっています。これはアプリの起動時にも正しくありません。
追加するには、これはproguarded apkです。私はproguard設定ファイルで以下のように定数を保持しています。
-keepclassmembers class **.R$* {
public static <fields>;
}
-keep class **.R$*
また、私は、特定のビルドタイプの
shrinkResources true
をコメントアウトしようとしましたが、それはこの問題を解決しませんでした。
私はbuildToolsVersion '25 .0.1'
サポートライブラリのバージョンを使用していますが、それがクラッシュしたときに、膨張するようにしようとしているhere is the layout file 25.1.0です。ライン161は、クラッシュに関連するビューが宣言されている場所である。便宜上ここに貼り付けます。
<com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus
android:id="@+id/contribution_til"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignEnd="@id/done_ib"
android:layout_alignStart="@id/cancel_ib"
android:layout_below="@id/done_ib"
android:layout_centerInParent="true"
android:paddingTop="16dp"
app:counterEnabled="true"
app:counterMaxLength="@integer/maxContributionLength"
app:errorEnabled="true"
app:hintEnabled="false">
<com.adroitandroid.stitchastory.ui.ContentEditTextPlus
android:id="@+id/contribution_et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:hint="@string/hint_add_story"
android:imeOptions="actionDone"
android:inputType="textAutoComplete|textCapSentences|textShortMessage|textMultiLine" />
</com.adroitandroid.stitchastory.ui.AppTextInputLayoutPlus>
AppTextInputLayoutPlusを気にすることなく、次のようにカスタム書体を取ります。
abstract class TextInputLayoutPlus extends TextInputLayout {
public TextInputLayoutPlus(Context context) {
super(context);
init();
}
public TextInputLayoutPlus(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public TextInputLayoutPlus(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
setTypeface(Typeface.createFromAsset(getContext().getAssets(), getTextFont()));
}
protected abstract String getTextFont();
}
// in its own class file
public class AppTextInputLayoutPlus extends TextInputLayoutPlus {
public AppTextInputLayoutPlus(Context context) {
super(context);
}
public AppTextInputLayoutPlus(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AppTextInputLayoutPlus(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected String getTextFont() {
return AppTextView.APP_TEXT_FONT;
}
}
これを解決する方法は誰にも分かりませんが、なぜこれが起こっていますか?
関連するコードを投稿してください –
問題の原因となっているデザインサポートライブラリのバージョンが分かるはずです。 – BladeCoder
@BladeCoder良い点、バージョン25.1.0 –