0

私は現在、ユーザーがギャラリーから写真をインポートしてさらに描画できる描画アプリを作成しています。写真は正常にロードされ、正常に描画できましたが、インポートされたファイルのサイズが画面サイズよりも大きい場合、画像の一部しか表示されないため、さらに変更したいと思います。

したがって、画面の寸法とインポートするファイルの寸法をロードし、特定の条件の場合、ユーザーが最大の幅または高さを埋めることによってその写真をステッチするかインポートするかを選択できるように、警告ダイアログをポップアップ表示します。 .

画像をロードするために、それはでActivityAメソッドを呼び出すことですActivityB (name as DrawView).

質問:

The constructor AlertDialog.Builder(DrawView) is undefinedアラートダイアログは、フレーズのエラーに下線を付けます

new AlertDialog.Builder(this);  

上記を次のように変更してみました

new AlertDialog.Builder(DrawView.this);  

それでも失敗します。これはどのように変更できますか?どうもありがとう!!!

コーディング:

   public void load_pic(String picturePath) // load a picture from gallery
   {   
       // get screen dimension first
       WindowManager wm = (WindowManager) context_new.getSystemService(Context.WINDOW_SERVICE);
       Display display = wm.getDefaultDisplay();
       int screenWidth = display.getWidth();
       int screenHeight = display.getHeight(); 

       Options op = new Options();
       op.inJustDecodeBounds = true;
       Bitmap pic_to_be_imported = BitmapFactory.decodeFile(picturePath, op);
       int x_pic_to_be_imported = op.outWidth;
       int y_pic_to_be_imported = op.outHeight;

       if ((x_pic_to_be_imported > screenWidth) || (y_pic_to_be_imported > screenHeight))
       {
              TextView myView2 = new TextView(context_new.getApplicationContext()); 
              myView2.setText(R.string.message_load_pic);
              myView2.setTextSize(15); 

              AlertDialog.Builder onBackBuilder = new AlertDialog.Builder(DoodleView.this);         
              onBackBuilder.setTitle(R.string.menuitem_on_load_pic);
              onBackBuilder.setView(myView2); 

              onBackBuilder.setCancelable(true);                   

              onBackBuilder.setPositiveButton(R.string.buttontext_create_load_pic_extend, new DialogInterface.OnClickListener() 
              {
                 public void onClick(DialogInterface dialog, int id) 
                    {   
                       //code
                    }            
              });

              onBackBuilder.setNegativeButton(R.string.buttontext_create_load_pic_keep_scale, new DialogInterface.OnClickListener() 
              {
                  public void onClick(DialogInterface dialog, int id) 
                    {                       
              bitmap = (BitmapFactory.decodeFile(picturePath)).copy(Bitmap.Config.ARGB_8888, true)
                          .createScaledBitmap(bitmap, screenWidth, screenHeight, true);
              bitmapCanvas = new Canvas(bitmap);
                    }             
              });

              AlertDialog alert = onBackBuilder.create();
              alert.show();            
       }

          // further codes
   }
4

1 に答える 1

2

非アクティビティ クラスの代わりに AlertDialog を作成するためのアクティビティ コンテキストを次のように渡します。

AlertDialog.Builder onBackBuilder = new AlertDialog.Builder(context_new);

Activityでのオブジェクト作成時にcontext_new渡される Activity コンテキストはどこですかDoodleView

于 2013-02-03T11:29:32.320 に答える