2017-10-21 9 views
1

私は自分のアクティビティでImageViewのベクターを使用していますが、アプリはAndroid 7.0で正常に動作しますが、Android 4.4ではクラッシュします。 LogcatはResources$NotFoundExceptionと言っています。私はここにstackoverflowで投稿されたソリューションを試してみましたが、どれもうまくいかないようです。

これは私が試した解決策です。

  1. は、XMLファイルにapp:srcCompatで活動

    のOnCreateイベントで私のGradleファイル

    defaultConfig { 
        vectorDrawables.useSupportLibrary = true 
    } 
    
  2. 追加に置き換え

    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 
    
  3. android:srcこれをこれを追加しました。

これは、これはJAVAファイル内のコード

ImageView detail_share; 
    detail_share = (ImageView) findViewById(R.id.details_share); 
    detail_share.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      // code for sharing item 

     } 
    }); 

また、エラーがビーイングのにもかかわらず、二ImageViewのではなく、最初の1で発生しているXML

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

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:srcCompat="@drawable/ic_arrow_back_white_24dp" 
      android:tint="@color/colorPrimary" 
      android:id="@+id/details_back" 
      android:layout_margin="15dp" 
      android:layout_alignParentStart="true"/> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      app:srcCompat="@drawable/share" 
      android:tint="@color/colorPrimary" 
      android:id="@+id/details_share" 
      android:layout_margin="15dp" 
      android:layout_alignParentEnd="true"/> 

    </RelativeLayout> 

で私のコードですまったく同じ。私は両方の画像をjavaファイルでも同じように扱っています。

答えて

1

私は数日前に同じ問題を抱えていました。 Android 4.4では、アンドロイドスタジオのディレクトリツリーに名前を付けた後、(v21)が薄いフォントで書かれたベクターはサポートされません。これらのベクターグラフィックスはAPI 21+のみでサポートされています。理想的には、Androidのスタジオは、異なるサイズのPNGファイルにベクトルを分割する必要がありますが、Androidスタジオではそれが時々自分で行うことはできません。

上記のシナリオでベクターグラフィックを「共有」アイコンとして使用しようとしているように見える場合は、アンドロイドスタジオの素材アイコンから共有アイコンをインポートするだけです。 。

関連する問題