Мое приложение работает на Gingerbread … Crash on ICS и HC

Мне нужна ваша помощь. Мое приложение отлично работает на GingerBread, но при сбое ICS и HC. Это логарифм

01-14 20:26:51.831: E/AndroidRuntime(698): FATAL EXCEPTION: main 01-14 20:26:51.831: E/AndroidRuntime(698): android.os.NetworkOnMainThreadException 01-14 20:26:51.831: E/AndroidRuntime(698): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 01-14 20:26:51.831: E/AndroidRuntime(698): at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 01-14 20:26:51.831: E/AndroidRuntime(698): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242) 01-14 20:26:51.831: E/AndroidRuntime(698): at java.net.InetAddress.getAllByName(InetAddress.java:220) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpEngine.connect(HttpEngine.java:303) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232) 01-14 20:26:51.831: E/AndroidRuntime(698): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80) 01-14 20:26:51.831: E/AndroidRuntime(698): at com.bozz.milaircraft.f23$ImageAdapter.getView(f23.java:125) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:192) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.measureVertical(LinearLayout.java:812) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 01-14 20:26:51.831: E/AndroidRuntime(698): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.View.measure(View.java:12723) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.os.Handler.dispatchMessage(Handler.java:99) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.os.Looper.loop(Looper.java:137) 01-14 20:26:51.831: E/AndroidRuntime(698): at android.app.ActivityThread.main(ActivityThread.java:4424) 01-14 20:26:51.831: E/AndroidRuntime(698): at java.lang.reflect.Method.invokeNative(Native Method) 01-14 20:26:51.831: E/AndroidRuntime(698): at java.lang.reflect.Method.invoke(Method.java:511) 01-14 20:26:51.831: E/AndroidRuntime(698): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 01-14 20:26:51.831: E/AndroidRuntime(698): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 01-14 20:26:51.831: E/AndroidRuntime(698): at dalvik.system.NativeStart.main(Native Method) 

Вот layout.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/linearLayout3" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#000" android:paddingBottom="5dp" android:paddingTop="5dp" > <Button android:id="@+id/homebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/homebutton" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:gravity="center" android:text="@string/nomeF22Raptor" android:textColor="#FFD800" android:textSize="22dp" android:textStyle="bold" /> <Button android:id="@+id/searchbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/searchbutton" > </Button> </LinearLayout> <TabHost android:id="@+id/tabhost" android:layout_width="match_parent" android:layout_height="420dp" android:layout_weight="0.80" android:background="@drawable/background" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" > </TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/datiF22Raptor" /> </LinearLayout> </ScrollView> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cartecF22Raptor" /> </LinearLayout> </ScrollView> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/linearLayout2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/utilizzatoriF22Raptor" /> </LinearLayout> </ScrollView> </LinearLayout> <LinearLayout android:id="@+id/tab4" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Gallery android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="fill_parent"/> <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center" > </ImageView> </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout> 

И это код Java

 import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.Gallery; import android.widget.ImageView; import android.widget.TabHost; import android.widget.TabHost.TabSpec; public class f23 extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.f23); Button bhome = (Button) findViewById(R.id.homebutton); bhome.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent("com.bozz.milaircraft.MENU")); } }); TabHost th = (TabHost) findViewById(R.id.tabhost); th.setup(); TabSpec specs = th.newTabSpec("tag1"); specs.setContent(R.id.tab1); specs.setIndicator("BRIEFING"); th.addTab(specs); specs = th.newTabSpec("tag2"); specs.setContent(R.id.tab2); specs.setIndicator("DESIGN"); th.addTab(specs); specs = th.newTabSpec("tag3"); specs.setContent(R.id.tab3); specs.setIndicator("USERS"); th.addTab(specs); specs = th.newTabSpec("tag4"); specs.setContent(R.id.tab4); specs.setIndicator("GALLERY"); th.addTab(specs); Gallery ga = (Gallery) findViewById(R.id.gallery); ga.setAdapter(new ImageAdapter(this)); } public class ImageAdapter extends BaseAdapter { /** The parent context */ private Context myContext; int imageBackground; /** URL-Strings to some remote images. */ private String[] myRemoteImages = { "http://www.medicinarozzano.it/images/milair/f4_1.jpg", "http://www.medicinarozzano.it/images/milair/f4_2.jpg", "http://www.medicinarozzano.it/images/milair/f4_3.jpg", "http://www.medicinarozzano.it/images/milair/f4_4.jpg", "http://www.medicinarozzano.it/images/milair/f4_5.jpg", "http://www.medicinarozzano.it/images/milair/f4_6.jpg", "http://www.medicinarozzano.it/images/milair/f4_7.jpg", "http://www.medicinarozzano.it/images/milair/f4_8.jpg", "http://www.medicinarozzano.it/images/milair/f4_9.jpg", "http://www.medicinarozzano.it/images/milair/f4_10.jpg"}; /** Simple Constructor saving the 'parent' context. */ public ImageAdapter(Context c) { this.myContext = c; } /** Returns the amount of images we have defined. */ public int getCount() { return this.myRemoteImages.length; } /* Use the array-Positions as unique IDs */ public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } /** * Returns a new ImageView to be displayed, depending on the position * passed. */ public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(this.myContext); try { /* Open a new URL and get the InputStream to load data from it. */ URL aURL = new URL(myRemoteImages[position]); URLConnection conn = aURL.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); /* Buffered is always good for a performance plus. */ BufferedInputStream bis = new BufferedInputStream(is); /* Decode url-data to a bitmap. */ Bitmap bm = BitmapFactory.decodeStream(bis); bis.close(); is.close(); /* Apply the Bitmap to the ImageView that will be returned. */ i.setImageBitmap(bm); } catch (IOException e) { i.setImageResource(R.drawable.f4_1); Log.e("DEBUGTAG", "Remote Image Exception", e); } /* Image should be scaled as width/height are set. */ i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); /* Set the Width/Height of the ImageView. */ i.setLayoutParams(new Gallery.LayoutParams(480, 640)); return i; } /** * Returns the size (0.0f to 1.0f) of the views depending on the * 'offset' to the center. */ public float getScale(boolean focused, int offset) { /* Formula: 1 / (2 ^ offset) */ return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset))); } } } 

Ошибка приложения при нажатии на вкладку Галерея.

Плохая идея выполнять (потенциально блокировать) сетевые операции в основном потоке вашего приложения, что и есть то, что вы делаете. До Honeycomb (Android 3.0) это была всего лишь плохая идея. Начиная с Android 3.0, это запрещено, и вы получаете это исключение, если пытаетесь это сделать.

См. http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html.

Вам необходимо объединить эту сетевую логику с отдельным асинхронным потоком. Или посмотрите на Handler . Вам нужно будет изменить свою архитектуру кода; Нет легкого исправления.

В Honeycomb сети не разрешено в потоке пользовательского интерфейса . Причина в том, что он замедляет пользовательский интерфейс (UI).

Вместо этого попробуйте загрузить изображения в фоновом потоке, самый простой способ реализовать это – использовать AsyncTask .

Используйте его на свой страх и риск:

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() .permitAll() .build(); StrictMode.setThreadPolicy(policy); 

Ресурс: http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder.html

Вы можете увидеть версию ОС и выполнить код в зависимости от нее.

Например:

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) 

Вот как я решаю проблему:

 import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.entity.BufferedHttpEntity; import org.apache.http.impl.client.DefaultHttpClient; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.Gallery; import android.widget.ImageView; import android.widget.TabHost; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.TabHost.TabSpec; public class f24 extends Activity { private ImageAdapter imageAdapter; private ArrayList<String> PhotoURLS = new ArrayList<String>(); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.f24); Button bhome = (Button) findViewById(R.id.homebutton); bhome.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub startActivity(new Intent ("com.bozz.milaircraft.MENU")); } }); TabHost th = (TabHost) findViewById(R.id.tabhost); th.setup(); TabSpec specs = th.newTabSpec("tag1"); specs.setContent(R.id.tab1); specs.setIndicator("BRIEFING"); th.addTab(specs); specs = th.newTabSpec("tag2"); specs.setContent(R.id.tab2); specs.setIndicator("DESIGN"); th.addTab(specs); specs = th.newTabSpec("tag3"); specs.setContent(R.id.tab3); specs.setIndicator("USERS"); th.addTab(specs); specs = th.newTabSpec("tag4"); specs.setContent(R.id.tab4); specs.setIndicator("GALLERY"); th.addTab(specs); imageAdapter = new ImageAdapter(this); final ImageView imgView = (ImageView) findViewById(R.id.GalleryView); Gallery g = (Gallery) findViewById(R.id.Gallery); g.setAdapter(imageAdapter); g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { imgView.setImageDrawable(LoadImageFromURL(PhotoURLS .get(position))); imgView.setScaleType(ImageView.ScaleType.FIT_CENTER); } }); // replace this code to set your image urls in list PhotoURLS.add("http://www.medicinarozzano.it/images/milair/f4_1.jpg"); PhotoURLS.add("http://www.medicinarozzano.it/images/milair/f4_1.jpg"); new AddImageTask().execute(); } class AddImageTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... unused) { for (String url : PhotoURLS) { String filename = url.substring(url.lastIndexOf("/") + 1, url.length()); filename = "th_" + filename; String thumburl = url.substring(0, url.lastIndexOf("/") + 1); imageAdapter.addItem(LoadThumbnailFromURL(thumburl + filename)); publishProgress(); //SystemClock.sleep(200); } return (null); } @Override protected void onProgressUpdate(Void... unused) { imageAdapter.notifyDataSetChanged(); } @Override protected void onPostExecute(Void unused) { } } private Drawable LoadThumbnailFromURL(String url) { try { URLConnection connection = new URL(url).openConnection(); String contentType = connection.getHeaderField("Content-Type"); boolean isImage = contentType.startsWith("image/"); if(isImage){ HttpGet httpRequest = new HttpGet(url); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient .execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(entity); InputStream is = bufferedHttpEntity.getContent(); Drawable d = Drawable.createFromStream(is, "src Name"); return d; } else { Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.no_image); Drawable d = new BitmapDrawable(b); return d; } } catch (Exception e) { Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG) .show(); Log.e(e.getClass().getName(), e.getMessage(), e); return null; } } private Drawable LoadImageFromURL(String url) { try { URLConnection connection = new URL(url).openConnection(); String contentType = connection.getHeaderField("Content-Type"); boolean isImage = contentType.startsWith("image/"); if(isImage){ HttpGet httpRequest = new HttpGet(url); HttpClient httpclient = new DefaultHttpClient(); HttpResponse response = (HttpResponse) httpclient .execute(httpRequest); HttpEntity entity = response.getEntity(); BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity( entity); InputStream is = bufferedHttpEntity.getContent(); // Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(is, null, o); // The new size we want to scale to final int REQUIRED_SIZE = 150; // Find the correct scale value. It should be the power of 2. int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale *= 2; } // Decode with inSampleSize is = bufferedHttpEntity.getContent(); BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap b = BitmapFactory.decodeStream(is, null, o2); Drawable d = new BitmapDrawable(b); return d; } else { Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.no_image); Drawable d = new BitmapDrawable(b); return d; } } catch (Exception e) { Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG) .show(); Log.e(e.getClass().getName(), e.getMessage(), e); return null; } } public class ImageAdapter extends BaseAdapter { int mGalleryItemBackground; private Context mContext; ArrayList<Drawable> drawablesFromUrl = new ArrayList<Drawable>(); public ImageAdapter(Context c) { mContext = c; TypedArray a = obtainStyledAttributes(R.styleable.Gallery1); mGalleryItemBackground = a.getResourceId( R.styleable.Gallery1_android_galleryItemBackground, 0); a.recycle(); } public void addItem(Drawable item) { drawablesFromUrl.add(item); } public int getCount() { return drawablesFromUrl.size(); } public Drawable getItem(int position) { return drawablesFromUrl.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView i = new ImageView(mContext); i.setImageDrawable(drawablesFromUrl.get(position)); i.setLayoutParams(new Gallery.LayoutParams(150, 120)); i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); i.setBackgroundResource(mGalleryItemBackground); return i; } } } 

Но теперь у меня другая проблема:

Если я не объявлю какой-либо SDK на Android Manifest, приложение прекрасно работает как на пряничном, так и на HC, и ICS. Однако, если я объявляю минимальный SDK, превышающий 1 или TargetSDK, приложение отлично работает на пряниках, но не на HC и ISC. Когда я нажимаю на изображение в галерее, ничего не отображается в средстве просмотра изображений. Тем не менее, появляется ошибка тоста.

Кроме того, если нет подключения к Интернету, приложение отключается.

С уважением Тиберио Бозотти

EDIT: я мог удалить SDK, но на сотах это не ясно. Это означает, что макет несовместим.