내가 개발하는 게임의 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
원본 게시물에 추가 설명이 될 수있는 logcat 출력을 추가하십시오. 그러나 onClick을 통해 RelativeLayout을 전달할 수 있는지에 대한 질문에 대답하기 위해, View에서 확장 한 모든 View를 거의 전달할 수 있습니다. :-) – ninetwozero
추가, 도움이 되길 바랍니다. – Rogue
secondarymenuanimation 파일 게시 –