2013-02-22 2 views
0

Я положил must.jpg в папку drawable-hdpi и создал этот метод.Отображение изображения в Android

public void createImageViewOb(){ 
     File poster = new File ("/BakuMovies/res/drawable-hdpi/must.jpg"); 
     ImageView poster_view = (ImageView)findViewById(R.drawable.must); 
     Bitmap bitmap = BitmapFactory.decodeFile(poster.getAbsolutePath()); 
     poster_view.setImageBitmap(bitmap); 
} 

Я хочу, чтобы отобразить изображение на экране с помощью вызова этого метода в mainActivity

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

Но когда я запускаю приложение он выходит из строя. Буду признателен за любую помощь.

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 


    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/imageView1" 
     android:layout_marginBottom="77dp" 
     android:layout_toRightOf="@+id/textSwitcher1" 
     android:text="@string/Albert" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <Button 
     android:id="@+id/aboutMeButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView1" 
     android:layout_alignTop="@+id/viewFlipper1" 
     android:onClick="showAboutMessage" 
     android:text="About Me" /> 

</RelativeLayout> 

LogCat:

02-22 05:13:29.028: E/Trace(1145): error opening trace file: No such file or directory (2) 
02-22 05:13:29.498: D/AndroidRuntime(1145): Shutting down VM 
02-22 05:13:29.498: W/dalvikvm(1145): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
02-22 05:13:29.518: E/AndroidRuntime(1145): FATAL EXCEPTION: main 
02-22 05:13:29.518: E/AndroidRuntime(1145): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bakumovies/com.example.bakumovies.MainActivity}: java.lang.NullPointerException 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.os.Looper.loop(Looper.java:137) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at java.lang.reflect.Method.invoke(Method.java:511) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at dalvik.system.NativeStart.main(Native Method) 
02-22 05:13:29.518: E/AndroidRuntime(1145): Caused by: java.lang.NullPointerException 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at com.example.bakumovies.MainActivity.createImageViewOb(MainActivity.java:44) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at com.example.bakumovies.MainActivity.onCreate(MainActivity.java:24) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.Activity.performCreate(Activity.java:5008) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
02-22 05:13:29.518: E/AndroidRuntime(1145):  ... 11 more 
02-22 05:13:31.449: I/Process(1145): Sending signal. PID: 1145 SIG: 9 
+1

вставьте свой logcat –

+1

Какая ошибка? Используйте logcat для получения полной трассировки стека и отправьте ее здесь. –

+0

Также, пожалуйста, напишите 'activity_main.xml'. –

ответ

0

Одна проблема заключается в том, что Android устройства, скорее всего, не имеет каталог с именем /BakuMovies/res/drawable-hdpi. Это структура каталогов вашей среды разработки и составляет , а не, непосредственно переданный на устройство. Кроме этого, я не могу дать, не зная, что вы пытаетесь сделать.

Edit:

Обратите внимание, что все ресурсы в вашем res каталог включены в файл .apk вашего приложения. Они не загружаются в устройство как отдельные файлы. Чтобы получить доступ к ресурсам (кроме строк) в Java-коде, вам необходимо использовать объект Resources. Вы получаете его, позвонив по телефону getResources() на объект Activity. Как только у вас есть объект Resources, позвоните getDrawable() или getDrawableForDensity(), чтобы получить ресурс.

+0

Я хочу, чтобы метод отображал изображение на главном экране приложения без описания это в activity_main.xml перед запуском. – LoLzMan

0

Попробуйте это.

public void createImageViewOb(){ 

     ImageView poster_view = (ImageView)findViewById((R.id.imageView); // imageView is id of your imageView 

     poster_view.setImageResource(R.drawable.must); 
} 

Обновлено

Сначала вы должны добавить ImageView на вашем activity_main расположение и установить его в качестве idandroid:id="@+id/imageView".

+0

ваш код неисправен! Перепроверьте его. – SudoRahul

+0

@ R.J спасибо. я исправлю это. – Bishan

1

Есть так много вещей, которые вы могли бы избежать, и очень легко загрузить изображение, которое вы хотите, в ImageView.

ли что-то вроде этого: -

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // New Code 
     ImageView poster_view = (ImageView)findViewById(R.id.imageView); //Assuming an ImgView is there in your layout activity_main 
     poster_view.setImageResource(R.drawable.must); //Must.jpg present in any of your drawable folders. 
    } 

Обновление: - Чтобы вставить ImageView динамически, сделать это в onCreate().

ImageView imageView = new ImageView(this); 
LinearLayout.LayoutParams lp = 
    new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
        LayoutParams.WRAP_CONTENT); 
imageView.setLayoutParams(lp);   
imageView.setImageResource(R.drawable.must);   
yourLinearLayout.addView(imageView); 
+0

Что делать, если я не описал must.jpg в activity_main? Есть ли способ показать изображение, не предписывая его в Activity_main перед запуском приложения? – LoLzMan

+0

, тогда где вы собираетесь отображать изображение? если нет «ImageView»? – SudoRahul

+0

проверить мой обновленный ответ. – SudoRahul

0

Вы использовали удобочитаемый. Вы вызываете метод setImageDrawable и задаете метод getDesources() .getDrawable set id getdrawable, чем будет показано изображение.

0

Наиболее вероятной причиной является то, что ваше приложение работает из памяти при попытке декодировать изображение в строке ниже

Bitmap bitmap = BitmapFactory.decodeFile(poster.getAbsolutePath()); 

Каковы размеры этого изображения, которое вы пытаетесь загрузить?

+0

Размеры изображения - 231x330. – LoLzMan

+0

См. Мой комментарий в вопросе. – Anuj

0

В Вашей деятельности Вы можете назвать это, чтобы получить свой Drawable ресурса как Drawable объекта и установить изображение, как показано ниже:

 Drawable d = getResources().getDrawable(R.drawable.must); 
    ImageView poster_view = (ImageView)findViewById(R.id.imageView)); 
     poster_view.setBackgroundDrawable(d); 

ИЛИ

Если вы хотите, чтобы показать свою вытяжку в ImageView вы может это сделать:

ImageView poster_view = (ImageView)findViewById(R.id.imageView); 
    poster_view.setImageResource(getResources().getDrawable(R.drawable.must));  

или в файле XML

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/smiley"/> 
+0

ваш код неисправен! Перепроверьте его. – SudoRahul

+0

Я обновил свой код и решил неисправную проблему. Пожалуйста, отмените свое голосование R.J. благодаря – GrIsHu

Смежные вопросы