2013-08-05 5 views
-5

Идея состоит в том, что вы можете горизонтально прокручивать изображения, если вы нажмете на нее, она показывает, что она увеличена над кнопкой, и если вы нажмете кнопку, она установит изображение в качестве обоев. Но мои приложения падает на бег:Приложение прекратило работу Проблема

вот код XML:

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

    <ImageView 
     android:id="@+id/IVDisplay" 
     android:layout_width="wrap_content" 
     android:layout_height="220dp" 
     android:layout_marginBottom="15dp" 
     android:layout_marginTop="15dp" 
     android:contentDescription="@string/button3_set" 
     android:padding="10dp" 
     android:src="@drawable/back_1" /> 

    <Button 
     android:id="@+id/bSetBG" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="22dp" 
     android:text="@string/button3_set" /> 

    <HorizontalScrollView 
     android:id="@+id/gallery1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="30dp" 
     android:layout_marginRight="30dp" 
     android:layout_marginBottom="10dp" 
     android:scrollbarFadeDuration="200" 
     android:scrollbarStyle="outsideOverlay" 
     android:layout_gravity="center" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <ImageView 
       android:id="@+id/Vimage1" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_1" /> 

      <ImageView 
       android:id="@+id/Vimage2" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_2" /> 

      <ImageView 
       android:id="@+id/Vimage3" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_3" /> 

      <ImageView 
       android:id="@+id/Vimage4" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_4" /> 

      <ImageView 
       android:id="@+id/Vimage5" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_5" /> 

      <ImageView 
       android:id="@+id/Vimage6" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_6" /> 

      <ImageView 
       android:id="@+id/Vimage7" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_7" /> 

      <ImageView 
       android:id="@+id/Vimage8" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_8" /> 

      <ImageView 
       android:id="@+id/Vimage9" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_9" /> 

      <ImageView 
       android:id="@+id/Vimage10" 
       android:layout_width="wrap_content" 
       android:layout_height="153dp" 
       android:contentDescription="@string/button3_imgprev" 
       android:padding="10dp" 
       android:src="@drawable/back_wallpaper" /> 
     </LinearLayout> 
    </HorizontalScrollView> 

</LinearLayout> 

и Java:

package com.example.st; 

import java.io.IOException; 
import android.app.Activity; 
import android.app.WallpaperManager; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class Button3 extends Activity implements View.OnClickListener { 

    ImageView display; 
    int toPhone; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.button_3); 

     display = (ImageView) findViewById(R.id.IVDisplay); 
     ImageView image1 = (ImageView) findViewById(R.id.Vimage1); 
     ImageView image2 = (ImageView) findViewById(R.id.Vimage2); 
     ImageView image3 = (ImageView) findViewById(R.id.Vimage3); 
     ImageView image4 = (ImageView) findViewById(R.id.Vimage4); 
     ImageView image5 = (ImageView) findViewById(R.id.Vimage5); 
     ImageView image6 = (ImageView) findViewById(R.id.Vimage6); 
     ImageView image7 = (ImageView) findViewById(R.id.Vimage7); 
     ImageView image8 = (ImageView) findViewById(R.id.Vimage8); 
     ImageView image9 = (ImageView) findViewById(R.id.Vimage9); 
     ImageView image10 = (ImageView) findViewById(R.id.Vimage10); 

     Button setWall = (Button) findViewById(R.id.bSetBG); 

     toPhone = R.drawable.back_1; 

     image1.setOnClickListener(this); 
     image2.setOnClickListener(this); 
     image3.setOnClickListener(this); 
     image4.setOnClickListener(this); 
     image5.setOnClickListener(this); 
     image6.setOnClickListener(this); 
     image7.setOnClickListener(this); 
     image8.setOnClickListener(this); 
     image9.setOnClickListener(this); 
     image10.setOnClickListener(this); 

     setWall.setOnClickListener(this); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     switch (v.getId()) { 

     case R.id.Vimage1: 
      display.setImageResource(R.drawable.back_1); 
      toPhone = R.drawable.back_1; 
      break; 

     case R.id.Vimage2: 
      display.setImageResource(R.drawable.back_2); 
      toPhone = R.drawable.back_2; 
      break; 
     case R.id.Vimage3: 
      display.setImageResource(R.drawable.back_3); 
      toPhone = R.drawable.back_3; 
      break; 
     case R.id.Vimage4: 
      display.setImageResource(R.drawable.back_4); 
      toPhone = R.drawable.back_4; 
      break; 
     case R.id.Vimage5: 
      display.setImageResource(R.drawable.back_5); 
      toPhone = R.drawable.back_5; 
      break; 
     case R.id.Vimage6: 
      display.setImageResource(R.drawable.back_6); 
      toPhone = R.drawable.back_6; 
      break; 
     case R.id.Vimage7: 
      display.setImageResource(R.drawable.back_7); 
      toPhone = R.drawable.back_7; 
      break; 
     case R.id.Vimage8: 
      display.setImageResource(R.drawable.back_8); 
      toPhone = R.drawable.back_8; 
      break; 
     case R.id.Vimage9: 
      display.setImageResource(R.drawable.back_9); 
      toPhone = R.drawable.back_9; 
      break; 
     case R.id.Vimage10: 
      display.setImageResource(R.drawable.back_wallpaper); 
      toPhone = R.drawable.back_wallpaper; 
      break; 

     case R.id.bSetBG: 

      WallpaperManager myWallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 

      Bitmap whatever = BitmapFactory.decodeStream(getResources() 
        .openRawResource(toPhone)); 

      try { 
       myWallpaperManager.setBitmap(whatever); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       Toast.makeText(Button3.this, 
          "Ooops, couldn't set the wallpaper", 
          Toast.LENGTH_SHORT).show(); 
      } 

     } 

    } 

} 

Вот ошибки, которые LogCat показавшие:

- 07-24 00:53:44.524: E/AndroidRuntime(4663): FATAL EXCEPTION: main 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.st/com.example.st.Button3}: android.view.InflateException: Binary XML file line #56: Error inflating class <unknown> 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread.access$600(ActivityThread.java:141) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.os.Handler.dispatchMessage(Handler.java:99) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.os.Looper.loop(Looper.java:137) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread.main(ActivityThread.java:5041) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at java.lang.reflect.Method.invokeNative(Native Method) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at java.lang.reflect.Method.invoke(Method.java:511) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at dalvik.system.NativeStart.main(Native Method) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): Caused by: android.view.InflateException: Binary XML file line #56: Error inflating class <unknown> 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.onCreateView(LayoutInflater.java:660) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:685) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.Activity.setContentView(Activity.java:1881) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at com.example.st.Button3.onCreate(Button3.java:24) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.Activity.performCreate(Activity.java:5104) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): ... 11 more 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): Caused by: java.lang.reflect.InvocationTargetException 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at java.lang.reflect.Constructor.constructNative(Native Method) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): ... 26 more 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): Caused by: java.lang.OutOfMemoryError 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:501) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:354) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.content.res.Resources.loadDrawable(Resources.java:1965) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.widget.ImageView.<init>(ImageView.java:120) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): at android.widget.ImageView.<init>(ImageView.java:110) 

- 07-24 00:53:44.524: E/AndroidRuntime(4663): ... 29 more 
+1

При сбое приложения проверьте лог-код, чтобы узнать, почему. Он покажет вам ошибку времени выполнения и номер строки, в которой произошла ошибка. – keyser

+0

Вы добавили активность в файл манифеста. – Prakhar

+0

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

ответ

0

Look как у вас есть ошибка OutOfMemory ...

Каковы размеры ваших растровых изображений?

Возможно, вам стоит попробовать добавить android:largeHeap="true" в свой файл AndroidManifest в разделе application.

+0

Да, изображения были довольно большими. Я добавил ** android: largeHeap = "true" **, но он все еще не работал, затем я переместил изображения с ** \ res \ drawable-hdpi ** на ** \ res \ drawable-xxhdpi ** и оно работает. благодаря – user2652966

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