2016-12-20 1 views
0

Работы с приложениями (проверено api 23 также проверено kitkat), но ничего не отображается, он должен показывать изображение (загрузить его и поместить в поле зрения). Поскольку я не получаю никаких ошибок, я теряюсь. Я смотрю из книги начинающих от android для кода, и они предлагают приложения для тестирования на 4.0 (icecream), но в этой версии не рекомендуется создавать в андроид-студии. Не работает ли это из-за некоторых изменений в том, как андроид работает с HTTP и сетью в новейших API?Простое приложение для Android для Android

public class NetworkingActivity extends Activity { 

ImageView img; 

private InputStream OpenHttpConnection(String urlString) 
     throws IOException 
{ 
    InputStream in = null; 
    int response = -1; 

    URL url = new URL(urlString); 
    URLConnection conn = url.openConnection(); 

    if (!(conn instanceof HttpURLConnection)) 
     throw new IOException("Not an HTTP connection"); 
    try{ 
     HttpURLConnection httpConn = (HttpURLConnection) conn; 
     httpConn.setAllowUserInteraction(false); 
     httpConn.setInstanceFollowRedirects(true); 
     httpConn.setRequestMethod("GET"); 
     httpConn.connect(); 
     response = httpConn.getResponseCode(); 
     if (response == HttpURLConnection.HTTP_OK) { 
      in = httpConn.getInputStream(); 
     } 
    } 
    catch (Exception ex) 
    { 
     Log.d("Networking", ex.getLocalizedMessage()); 
     throw new IOException("Error connecting"); 
    } 
    return in; 
} 

private Bitmap DownloadImage(String URL) 
{ 
    Bitmap bitmap = null; 
    InputStream in = null; 
    try { 
     in = OpenHttpConnection(URL); 
     bitmap = BitmapFactory.decodeStream(in); 
     in.close(); 
    } catch (IOException e1) { 
     Log.d("NetworkingActivity", e1.getLocalizedMessage()); 
    } 
    return bitmap; 
} 

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
    protected Bitmap doInBackground(String... urls) { 
     return DownloadImage(urls[0]); 
    } 

    protected void onPostExecute(Bitmap result) { 
     ImageView img = (ImageView) findViewById(R.id.img); 
     img.setImageBitmap(result); 
    } 
} 

public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    new DownloadImageTask().execute("http://www.mayoff.com/5-01cablecarDCP01934.jpg"); 

} 
} 

Вот LogCat:

logcat

AndroidManifest.xml файл:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="metropolitan.com.desetopredavanjeprotokoli10"> 

<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

MainActivity класс:

package metropolitan.com.desetopredavanjeprotokoli10; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
} 

Здесь вы идете:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Smor" 
    android:layout_gravity="center"/> 

<ImageView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/img" 
    android:layout_gravity="center"/> 
</RelativeLayout> 
+1

R.layout.activity_main Мне нужно это =. = –

ответ

1

Поскольку вы beginer я предлагаю ваш узнать, как использовать рамки Там много пользы, используя рамки, если вам не нужно будет реализовать некоторый сложный код для обработки, такие как кэширование , изменение размера, избегая аварии памяти, обработки почти всех API, которые вы столкнулись и т.д.

для загрузки изображения я предлагаю

Picasso (который я предлагаю большинство)

Glide

Для нормального запроса Http

Volley

Вы можете нам Volley скачать образ. Когда вы начинаете учиться, это очень трудно понять, но после того, как вы действительно получите недоумение, я обещаю, что вы не захотите использовать регулярный HTTPURLConnection для обработки любого HTTP-запроса.

Если вам нужна загрузка с прогрессом, пожалуйста, дайте мне знать, я дам вам добавить кода, хотя это и очень сложно.

Отредактировано:

До сих пор я был тест из кода он работает отлично fine.I хотел бы добавить его для вас.

MainActivity

ImageView img; 

    private InputStream OpenHttpConnection(String urlString) 
      throws IOException 
    { 
     InputStream in = null; 
     int response = -1; 

     URL url = new URL(urlString); 
     URLConnection conn = url.openConnection(); 

     if (!(conn instanceof HttpURLConnection)) 
      throw new IOException("Not an HTTP connection"); 
     try{ 
      HttpURLConnection httpConn = (HttpURLConnection) conn; 
      httpConn.setAllowUserInteraction(false); 
      httpConn.setInstanceFollowRedirects(true); 
      httpConn.setRequestMethod("GET"); 
      httpConn.connect(); 
      response = httpConn.getResponseCode(); 
      if (response == HttpURLConnection.HTTP_OK) { 
       in = httpConn.getInputStream(); 
       Log.d("asd","OK"); 
      }else{ 
       Log.d("asd","error"); 
      } 
     } 
     catch (Exception ex) 
     { 
      Log.d("Networking", ex.getLocalizedMessage()); 
      throw new IOException("Error connecting"); 
     } 
     return in; 
    } 

    private Bitmap DownloadImage(String URL) 
    { 
     Bitmap bitmap = null; 
     InputStream in = null; 
     try { 
      in = OpenHttpConnection(URL); 
      Log.d("in", String.valueOf(in)); 
      bitmap = BitmapFactory.decodeStream(in); 
      in.close(); 
     } catch (IOException e1) { 
      Log.d("NetworkingActivity", e1.getLocalizedMessage()); 
     } 
     return bitmap; 
    } 

    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 

     protected Bitmap doInBackground(String... urls) { 
      Log.d("aSD","ASD"); 
      return DownloadImage(urls[0]); 
     } 

     protected void onPostExecute(Bitmap result) { 
      ImageView img = (ImageView) findViewById(R.id.img); 
      img.setImageBitmap(result); 
     } 
    } 

    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     new DownloadImageTask().execute("http://www.mayoff.com/5-01cablecarDCP01934.jpg"); 

    } 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.myapplication.MainActivity"> 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/img"/> 
</RelativeLayout> 

Последняя добавить это явить

<uses-permission android:name="android.permission.INTERNET"/> 

Результат enter image description here

Если это действительно не работает, попробуйте проверить подключение к эмулятору или устройству.

+0

Хмм, tnx для этого. Я обязательно проверю их. Также в этом журнале вы знаете, что может привести к тому, что изображение не будет отображаться? Tnx снова для маршрутов, я начну учиться у них, как только я закончу эту ошибку с помощью приложения. Это приложение домашнее задание, поэтому мне нужно его закончить. – Beansolder

+0

@Beansolder вы добавили разрешение в свой манифест? –

+0

Да в файле манифеста я добавил разрешение INTERNET. – Beansolder