2012-04-02 3 views
1

내가 개발하는 게임의 UI 코드를 간소화하려고 시도하면서 RelativeLayout을 ImageButton의 onClick()을 통해 전달하려고 시도하는 동안 매우 유용하다는 것을 알았습니다.RelativeLayout을 onClick을 통해 전달할 수 있습니까?

ImageButton을 클릭 할 때마다 강제 종료되는 것처럼 보이기 때문에 이것이 가능한지 궁금합니다. 이것은 일반적으로 내 코드에 문제가 있습니까, 아니면 RelativeLayout을 통과시키는 실제 메커니즘이 불가능합니까? 고급의

덕분에, 여기 내 코드입니다 :

public class SecondaryMenu extends Activity { 

    ImageButton scrambledbutton; //Button That checks click and performs animation for the scrambled carton. 
    ImageButton breakfastburritobutton; //Button for animation for breakfast burrito carton. 
    ImageButton eggsbenedictbutton; //Button for eggs benedict carton animation. 
    ImageButton eggsontoastbutton; //Button for eggs on toast animation 
    ImageButton eggsaladsandwichbutton; //Button for egg salad sandwich animation. 
    ImageButton eastereggsbutton; //Button for easter eggs animation. 
    ImageButton ostricheggsbutton; //Button for ostrich eggs animation. 
    ImageButton quaileggsbutton; //Button for quail eggs animation. 
    RelativeLayout animatedcarton; //RelativeLayout for animating 

    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.secondary_menu); //Sets the current layout to the Secondary_Menu layout 


      //Does animation based on button press - SCRAMBLED 
      scrambledbutton = (ImageButton) findViewById(R.id.scrambledbutton); 
      scrambledbutton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) {    

        //Calls the animation for the carton, and passes it the view to animate. 
        cartonanimation(findViewById (R.id.scrambledcarton)); 
       } 
      }); 

      //Does animation based on button press - BREAKFAST BURRITO 
      breakfastburritobutton = (ImageButton) findViewById (R.id.breakfastburritobutton); 
      breakfastburritobutton.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        //Calls animation and passes view to be animated. 
        cartonanimation(findViewById (R.id.breakfastburittocarton));     
       } 
      }); 

    } 

    //Animation that slides clicked carton off the screen 
    private void cartonanimation(View tempview) { 
     animatedcarton = (RelativeLayout) tempview; 
     animatedcarton.setVisibility(RelativeLayout.VISIBLE); 
     animatedcarton.setBackgroundResource(R.anim.secondarymenuanimation); 
     AnimationDrawable viewAnimation = (AnimationDrawable) animatedcarton.getBackground(); 
     viewAnimation.start(); 
     viewAnimation.setOneShot(true); 
    } 
} 

그리고 내 XML :

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

<!-- Carton number 1 - Scrambled --> 
<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="320dp" 
    android:layout_height="160dp" 
    android:gravity="top" 
    android:id="@+id/scrambledcarton"> 
    <ImageButton 
     android:id="@+id/scrambledbutton" 
     android:background="@drawable/cartonbackground" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="20dp"> 
    </ImageButton> 
    <TextView 
     style="@style/cartondishstyle" 
     android:text="@string/carton1"><!-- Change for each Carton --> 
    </TextView> 
    <TextView 
     style="@style/cartoneggcountstyle" 
     android:text="18" 
     android:layout_marginRight="40dp"><!-- Adjust for each Carton --> 
    </TextView> 
</RelativeLayout> 

<!-- Carton number 2 - Breakfast Burrito --> 
<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="320dp" 
    android:layout_height="160dp" 
    android:gravity="top" 
    android:id="@+id/breakfastburittocarton"> 
    <ImageButton 
     android:id="@+id/breakfastburritobutton" 
     android:background="@drawable/cartonbackground" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="20dp"> 
    </ImageButton> 
    <TextView 
     style="@style/cartondishstyle" 
     android:text="@string/carton2"><!-- Change for each Carton --> 
    </TextView> 
    <TextView 
     style="@style/cartoneggcountstyle" 
     android:text="18" 
     android:layout_marginRight="40dp"><!-- Adjust for each Carton --> 
    </TextView> 
</RelativeLayout> 

</LinearLayout> 

그리고 로그 고양이

04-02 00:27:24.725: ERROR/AndroidRuntime(1674): FATAL EXCEPTION: main 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674): android.content.res.Resources$NotFoundException: File res/anim/secondarymenuanimation.xml from drawable resource ID #0x7f040000 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.content.res.Resources.loadDrawable(Resources.java:1697) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.content.res.Resources.getDrawable(Resources.java:581) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.view.View.setBackgroundResource(View.java:7533) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at com.example.eggRoll.SecondaryMenu.cartonanimation(SecondaryMenu.java:54) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at com.example.eggRoll.SecondaryMenu.access$0(SecondaryMenu.java:51) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at com.example.eggRoll.SecondaryMenu$1.onClick(SecondaryMenu.java:35) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.view.View.performClick(View.java:2485) 
04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.view.View$PerformClick.run(View.java:9080) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.os.Handler.handleCallback(Handler.java:587) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.os.Handler.dispatchMessage(Handler.java:92) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.os.Looper.loop(Looper.java:123) 
04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.app.ActivityThread.main(ActivityThread.java:3683) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at java.lang.reflect.Method.invoke(Method.java:507) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at dalvik.system.NativeStart.main(Native Method) 
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag set 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:783) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  at android.content.res.Resources.loadDrawable(Resources.java:1694) 

04-02 00:27:24.725: ERROR/AndroidRuntime(1674):  ... 16 more 
+0

원본 게시물에 추가 설명이 될 수있는 logcat 출력을 추가하십시오. 그러나 onClick을 통해 RelativeLayout을 전달할 수 있는지에 대한 질문에 대답하기 위해, View에서 확장 한 모든 View를 거의 전달할 수 있습니다. :-) – ninetwozero

+0

추가, 도움이 되길 바랍니다. – Rogue

+0

secondarymenuanimation 파일 게시 –

답변

0

당신은 전에 viewAnimation.setOneShot(true);을 넣어해야 할 수도 있습니다 viewAnimation.start(); 재생 방법에 영향을주기 때문에

+0

그걸 시도했는데 볼 수있는 효과가 없었습니다. 여전히 강제로 닫았습니다. – Rogue

관련 문제