2012-01-14 11 views
3

私はあなたの助けが必要です。 私のアプリはGingerBreadでうまく動作しますが、ICSとHCがクラッシュします。 これはlogcat私のアプリはジンジャーブレッドで動作します... 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))); 
     } 
    } 
} 

私はギャラリー]タブをクリックしてアプリケーションのクラッシュです。

答えて

4

ハニカムネットワークでは、not allowed on the UI threadです。その理由は、ユーザーインターフェイス(UI)が遅くなるためです。

代わりにバックグラウンドスレッドで画像をダウンロードしようとすると、これを実装する最も簡単な方法はAsyncTaskです。

8

あなたの行っていることであるアプリケーションのメインスレッドでネットワーク操作を(潜在的にブロックする)悪い考えです。 Honeycomb(Android 3.0)の前はちょっとしたアイデアだった。 Android 3.0以降では禁止されています。この場合、この例外が発生します。

はあなたが別の非同期スレッドに、このネットワーク・ロジックを外注する必要がhttp://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

を参照してください。または、Handlerを見てください。コードのアーキテクチャを変更する必要があります。簡単な修正はありません。

+3

これは禁止されていますが、user1149727が許容できないブロック動作を起こしているアプリケーションのクライミングを続けたい場合は、[StrictMode](http://developer.android.com/reference/android/os/StrictMode.html)を無効にすることができます。 – Jens

1

OSのバージョンを確認し、それに応じてコードを実行することができます。例えば

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

これは私が問題を解決する方法である:

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; 
     } 
    } 

} 

しかし、今、私は別の問題を抱えている:

私はAndroidのマニフェスト上の任意のSDKを宣言していないドン場合、アプリはジンジャーブレッドとHCとICSの両方で完璧に動作します。しかし、1以上のSDK、TargetSDKを宣言すると、アプリはジンジャーブレッドでうまく動作しますが、HCやISCでは正常に動作しません。ギャラリーの画像をクリックすると、画像ビューアに何も表示されません。しかし、トーストのエラーがポップアップします。

また、インターネットに接続していないと、アプリがクラッシュします。

敬具 ティベリオBozotti

EDIT: 私はSDKを削除することができますが、ハニカムに、それは明らかではありません。レイアウトに互換性がないことを意味します。

+2

これはフォーラムではありません - 回答があなたを助けてくれたことがわかったら、緑色のチェックボックスをクリックして解決済みとマークしてください。さらに質問がある場合は、それらを新しい質問として投稿し、小さな独立した問題に投稿されたコードの量を減らそうとしてください。 http://stackoverflow.com/faqで詳しく学んでください – vidstige

4

は、ご自身の責任でそれを使用してください:

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

リソース: http://developer.android.com/reference/android/os/StrictMode.ThreadPolicy.Builder。html

関連する問題