Я создаю диалоговое окно при нажатии кнопки. Для этого я создал класс, расширяющий Dialog. Я создал XML-файл, который содержит параметры (все это текстовый вид [7 текстовый вид]) в этом XML-файле для каждого текстового представления. Я определил тег android: onClick = "imageProcessingHandler". Когда я нажимаю кнопку из действия, открывается диалоговое окно, в котором все нормально. Теперь, когда я нажимаю на любое текстовое изображение, я получаю ошибку, т. Е. Функция не определена. Я определил эту функцию в классе как public, которая расширяет Dialog. Кто-нибудь может помочь?Обработка событий из диалогового окна
Еще одна вещь, если я хочу получить доступ к Imageview; в классе, который расширяет Dialog, активности, из которого было открыто диалоговое окно, и как я мог это сделать? Я пытаюсь сделать следующее: ImageView imgView = (ImageView) findViewById (R.id.fullphoto); но в этом случае imgView содержит нулевое значение :(
Код:
от деятельности "MyActivity" на кнопку мыши Я создаю объект как:
ShowOptionsInDialog displayDialog = new ShowOptionsInDialog(this, passedData);
displayDialog.show();
ShowOptionsInDialog Класс:
public class ShowOptionsInDialog extends Dialog{
private Context context;
public ShowOptionsInDialog(Context context, ArrayList<String> data) {
super(context);
this.context = (Context) context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imageprocessingoptions);
setTitle("Try options");
}
public void imageProcessingHandler(View view){
ImageView photo = (ImageView) findViewById(R.id.fullphoto);
}
imageprocessingoptions.XML
<TextView
android:id="@+id/invertColorText"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:cursorVisible="false"
android:paddingLeft="10dp"
android:paddingBottom="5dp"
android:gravity="bottom"
android:text="Invert Color"
android:textSize="15dp"
android:clickable="true"
android:onClick="imageProcessingHandler" />
код активность:
public class PhotoHandler extends Activity {
private Bundle intentExtra;
private String photoID;
private CommomObject _commonObject;
private Facebook facebook;
private ImageView photo;
private DownloadImageTask downlaodImageTask;
private ProgressDialog progDialog;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.photohandler);
intentExtra = getIntent().getExtras();
photoID = intentExtra.getString("PHOTO_ID");
displayPhoto();
}
private void displayPhoto() {
_commonObject = CommomObject.getInstance();
facebook = _commonObject.getFacebookInstance();
String imageURL = "https://graph.facebook.com/"+photoID+"/picture?type=normal&access_token="+facebook.getAccessToken();
photo = (ImageView) findViewById(R.id.fullphoto);
photo.setTag(imageURL);
photo.setScaleType(ScaleType.FIT_CENTER);
downlaodImageTask = new DownloadImageTask();
progDialog = new ProgressDialog(this);
progDialog.setMessage("Fetching photo...");
progDialog.show();
downlaodImageTask.execute(photo);
}
public class DownloadImageTask extends AsyncTask<ImageView, Void, Bitmap>{
ImageView imageView = null;
@Override
protected Bitmap doInBackground(ImageView... imageViews){
this.imageView = imageViews[0];
return downloadImage((String)imageView.getTag());
}
@Override
protected void onPostExecute(Bitmap result) {
imageView.setImageBitmap(result);
}
private Bitmap downloadImage(String url) {
Bitmap photo = null;
try {
URL u = new URL(url);
URLConnection c = u.openConnection();
c.connect();
BufferedInputStream stream = new BufferedInputStream(c.getInputStream());
photo = BitmapFactory.decodeStream(stream);
stream.close();
} catch (MalformedURLException e) {
Log.e("PhotoHandler", "malformed url: " + url);
} catch (IOException e) {
Log.e("PhotoHandler", "An error has occurred downloading the image: " + url);
}
progDialog.dismiss();
return photo;
}
}
public void footerHandler(View view){
switch(view.getId()){
case R.id.useButton:
break;
case R.id.saveButton:
break;
case R.id.shareButton:
break;
case R.id.photoEffect:
ArrayList<String> passedData = new ArrayList<String>();
ShowOptionsInDialog displayDialog = new ShowOptionsInDialog(this, passedData);
displayDialog.show();
break;
}
}
public void imageProcessingHandler(View view){
switch(view.getId()){
case R.id.invertColorText:
Bitmap newBitmap = ImageProcessing.doInvert(photo.getDrawingCache());
photo.setImageBitmap(newBitmap);
break;
case R.id.greyScaleText:
break;
case R.id.gammaCorrectionText:
break;
case R.id.sepiaEffectText:
break;
case R.id.embossingEffectText:
break;
case R.id.reflectionEffectText:
break;
case R.id.contrastText:
break;
}
}
}
Извините, но как я мог реализовать 2-й, я думаю, что это невозможно. И для 1-го я тоже попробовал. –
Хорошо, что ваш ImageView имеет значение null, поскольку он создан только для метода, и если метод не работает, изображение будет содержать нуль. –
Кстати, это ImageView из диалогового окна xml? Если нет, попробуйте 'context.findViewById (R.id.yourimageview)' –