0

ユーザーギャラリーから画像を保持するリクエストコードを送信することにより、ユーザーが Personalize クラスのアイコンを変更できるようにしています。setIconImageinWidget() メソッドは、結果をここ (Drag_and_Drop_App 内) に送信します。

     else if(requestCode == RESULT_ICON){
         byte[] byteArray = data.getByteArrayExtra("myIconBitmap"); 
         Bitmap myIcon = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
         setBackgroundImageForIcon(myIcon); 
         Log.d("Drag_and_Drop_App", "Icon is set");
     }
     } 

setBackgroundImageForIcon メソッドは次のとおりです。

         @SuppressLint("NewApi") 
     private void setBackgroundImageForIcon(Bitmap bitmap) { 
     ImageView ivICON = (ImageView) findViewById(R.id.bwidgetOpen);

     Drawable dq = new BitmapDrawable(getResources(), bitmap); 

     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
     ivICON.setImageDrawable(dq);
     } else { 
     ivICON.setImageDrawable(dq);
     Log.d("Drag_and_Drop_App", "Icon is set");
     } 
     } 

これはエラーを返しませんが、ユーザーが使用する画像に基づいてアイコンはまったく変更されません。

しばらく見回した後、ここでコーディングのアプリ ウィジェット プロバイダー セクションを変更する必要があることに気付きました。

package com.example.awesomefilebuilderwidget;
IMPORTS
public class AFBWidget extends AppWidgetProvider{

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    Random r = new Random();
    int randomInt = r.nextInt(1000000000);
    String rand = String.valueOf(randomInt);

    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++){
        int awID = appWidgetIds[i];
        RemoteViews v = new RemoteViews(context.getPackageName(), R.layout.widget);
        v.setTextViewText(R.id.tvwidgetUpdate, rand);
           Intent configIntent = new Intent(context, Drag_and_Drop_App.class);

            PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);

            v.setOnClickPendingIntent(R.id.bwidgetOpen, configPendingIntent);
           //me trying to set the Bitmap from the above classes somehow... v.setImageViewBitmap(R.id.bwidgetOpen, R.id.);

        appWidgetManager.updateAppWidget(awID, v);
    }

}

@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    // TODO Auto-generated method stub
    super.onDeleted(context, appWidgetIds);
    Toast.makeText(context, "Thanks for checking us out!", Toast.LENGTH_SHORT).show();
}
}

そして、私が変更しているimageViewはこれです:

<ImageView
    android:id="@+id/bwidgetOpen"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"
    android:contentDescription="@string/desc"/>

Widget.xml で

アイコンの変更を許可するように、ウィジェット プロバイダーを変更するにはどうすればよいですか? 私はこれが読むべきことがたくさんあることを知っていますが、どんな助けも感謝しています!

更新しました:

         @SuppressLint("NewApi") 
     private void setBackgroundImageForIcon(Bitmap bitmap) { 
         Log.d("Drag_and_Drop_App", "Icon...");
     ImageView ivICON = (ImageView) findViewById(R.id.bwidgetOpen);

     BitmapDrawable dq = new BitmapDrawable(getResources(), bitmap); 

     if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
     // ivICON.setImageDrawable(dq);
         ivICON.setImageResource(R.drawable.pattern1);
     } else { 
    // ivICON.setImageDrawable(dq);
     ivICON.setImageResource(R.drawable.pattern1);
     Log.d("Drag_and_Drop_App", "Icon is set");
     } 
     } 
4

0 に答える 0