2012-09-24 5 views
0

Android 앱에 대해 BaseballCardsList, BaseballCardsDetails 및 FilterBaseballCards라는 세 가지 액티비티를 만들었습니다. BaseballCardsList는 내 앱이 시작될 때로드되는 주요 활동입니다. 메뉴에는 다른 두 가지 활동 중 하나가 표시됩니다. 이제 BaseballCardsList 및 BaseballCardsDetails가 생겼을 때 모든 것이 제대로 작동하는 것처럼 보였습니다. 그러나 FilterBaseballCards를 추가하면 문제가 계속 발생합니다. 나는 이미 android:layout_widthandroid:layout_height 속성을 제외한 one issue을 알아 냈습니다. 내 현재 문제는 BaseballCardsDetails 또는 FilterBaseballCards에 대한 XML 레이아웃 파일을 변경하면 메뉴 클릭이 잘못된 Activity를로드하거나 Activity를 전혀로드하지 않는 것입니다 (앱은 BaseballCardsList에 남아 있습니다). 순간메뉴 클릭으로 잘못된 활동이 표시됩니다.

, 나는 filter_cards.xml에 다음과 같은 한 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
> 
    <TextView  
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/filter_by_label" 
    /> 
    <Button android:id="@+id/ok_button" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/ok_button" 
    /> 
</LinearLayout> 

이 컴파일 내가 예상대로 실행됩니다. 내가 BaseballCardDetails을로드 메뉴에서 클릭하면있는 LinearLayout의 끝에서

<Button android:id="@+id/cancel_button" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="@string/cancel_button" 
    /> 

를 추가 할 때 FilterBaseballCards해야하며 FilterBaseballCards는 아무것도하지 않습니다로드 메뉴를 클릭해야 위젯을로드합니다.

저는 Android 프로그래밍에 익숙하지 않으며 매우 좌절하고 있습니다. 나는 내가 한 일을 읽었을 때부터 모든 일이 어떻게 작동 하는지를 이해할 줄 알았다고 생각했지만, 분명히 그렇게 생각하지는 않았다. 왜 Button 위젯을 추가하면 관련없는 문제가 발생하는지 알 수 없습니다. 그리고 나는 진짜 문제가 무엇인지 추적하는 법을 모른다. 이 부분을 파악하려면 어디에서보아야합니까? 더 많은 코드를 게시해야한다면 기꺼이 그렇게 할 것입니다. 저의 마지막 질문은 모든 코드로 너무 오랫동안 끝났습니다. 그래서 저는 새로운 질문에 많은 코드로 모든 사람을 침몰시키고 싶지 않았습니다.

FilterBaseballCards.java

package bbct.android; 

import android.app.Activity; 
import android.os.Bundle; 

public class FilterBaseballCards extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.filter_cards); 
    } 
} 
+0

이 문제는 FilterBaseballCards 활동에서 발생할 수 있습니다. FilterBaseballCards 코드뿐만 아니라 로그를 게시 할 수 있습니까? – jaredzhang

+0

@jaredzhang 필자는 FilterBaseballCards.java를 게시했는데, 이것은 매우 뼈없는 것입니다. 로그에 관해서,'adb logcat'은 650 줄 이상을 제공합니다. 나는 그로부터 유용한 부분을 걸러내는 방법을 모르겠습니다. –

+0

당신의 활동에 문제가없는 것 같습니다. logcat의 오류 로그는 어떨까요? 실제로는 더 중요합니다. – jaredzhang

답변

0

당신은 자원 및 ID를 변경하면 어떻게되는지에 대한 내 추측이다 Android 프로젝트의 XML 파일 :

aapt가 생성 한 R 클래스에는 묶음이 포함되어 있습니다. f static final ints. 이 파일을 참조하는 소스 파일을 컴파일하면 결과 .class 파일에 값이 하드 코드됩니다. 이제 리소스 또는 ID를 변경하고 R 클래스가 재생성되면 static final ints의 값이 재생성됩니다. 컴파일 된 .class 파일에 하드 코드 된 값이 다른 자원을 참조 할 수 있습니다.

이 질문이 정확한지 테스트하기에는 너무 피곤합니다. 그래서 누군가 내 추측을 확인할 수 있다면 좋을 것입니다.

2

난 당신이 당신의 클래스 파일을 선언 한 것을 희망하여 다음 Manifest

<activity android:name=".Your Claass Name"> 
+0

예. 확인해 주셔서 감사합니다 ;-) –

+0

@ Code-Guru 문제가 없으므로 지금 작동합니까? –

+2

예, 'ant clean'을 실행 한 후에 작동하도록했습니다. –

관련 문제