2013-04-23 1 views
1

이 프로그램에서 나는 sliding menu library을 구현했습니다. 지금 내가 겪고있는 문제는 이러한 메뉴에 대한 클릭 클릭 리스너를 설정하는 것입니다.클릭 리스너에서 슬라이딩 메뉴 설정

라이브러리는 메뉴가 다른 레이아웃이거나 적어도 내가 구현 한 방식이어야합니다. 지금 달성하고 싶은 것은 이러한 메뉴 옵션에 다양한 onClick 리스너를 구현하는 것입니다.

프로그램은 다음과 같다 (그것의 짧은 부분)

menu.xml

<RelativeLayout android:id="@+id/ask_a_question" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dp" 
     android:layout_marginBottom="5dp" 
     android:onClick="getQuestion"> 

     <TextView android:layout_alignParentLeft="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/ask_a_question" 
      android:textColor="#ffffff" 
      android:layout_marginLeft="15dp" 
      android:layout_centerVertical="true"/> 

     <ImageView android:layout_alignParentRight="true" 
      android:contentDescription="@string/ask_a_question" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/question" 
      android:layout_marginRight="15dp"/> 

    </RelativeLayout> 

MainActivity.java에 프로그램은 다음과 같다 :

public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setBehindContentView(R.layout.menu); 

     getSlidingMenu().setBehindOffset(100); 

     ask_a_question = (RelativeLayout)findViewById(R.id.ask_a_question); 
     ask_a_question.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       getQuestion(); 
      } 
     }); 
     login = (Button)findViewById(R.id.log_in_button); 
     login.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
      startActivity(new Intent("com.example.btshome.LOGINACTIVITY")); 
      } 
     }); 
    } 

    public Intent getQuestion() 
    { 
     Intent i = new Intent("com.example.btshome.ASKPAGE"); 
     startActivity(i); 
     return null; 
    } 

다음 오류를 반환하는 :

,210
04-23 19:43:30.030: E/AndroidRuntime(845): FATAL EXCEPTION: main 
04-23 19:43:30.030: E/AndroidRuntime(845): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.btshome.ASKPAGE } 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1545) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1416) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Activity.startActivityForResult(Activity.java:3351) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Activity.startActivityForResult(Activity.java:3312) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Activity.startActivity(Activity.java:3522) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.Activity.startActivity(Activity.java:3490) 
04-23 19:43:30.030: E/AndroidRuntime(845): at com.example.btshome.MainActivity.getQuestion(MainActivity.java:47) 
04-23 19:43:30.030: E/AndroidRuntime(845): at com.example.btshome.MainActivity$1.onClick(MainActivity.java:30) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.view.View.performClick(View.java:4084) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.view.View$PerformClick.run(View.java:16966) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.os.Handler.handleCallback(Handler.java:615) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.os.Looper.loop(Looper.java:137) 
04-23 19:43:30.030: E/AndroidRuntime(845): at android.app.ActivityThread.main(ActivityThread.java:4745) 
04-23 19:43:30.030: E/AndroidRuntime(845): at java.lang.reflect.Method.invokeNative(Native Method) 
04-23 19:43:30.030: E/AndroidRuntime(845): at java.lang.reflect.Method.invoke(Method.java:511) 
04-23 19:43:30.030: E/AndroidRuntime(845): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
04-23 19:43:30.030: E/AndroidRuntime(845): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-23 19:43:30.030: E/AndroidRuntime(845): at dalvik.system.NativeStart.main(Native Method) 

매니페스트 페이지 :

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.btshome.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity android:name=".LoginActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.example.btshome.LOGINACTIVITY"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity android:name=".SignUp" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.example.btshome.SIGNUP"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity android:name=".LoginPage" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="com.example.btshome.LOGINPAGE"/> 
       <category android:name="android.intent.category.DEFAULT"/> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name=".QuestionAsking" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="com.example.btshome.ASKPAGE" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

    </application> 

내가 클릭 좋은에서이 메뉴 항목을 구현하기 위해 복용 방법인가? 또는 내 모든 페이지에서 슬라이딩 메뉴를 사용할 수 있어야하기 때문에 나쁜 방법입니다. 도와주세요.

+0

지금 작업을 수행해야합니까? 아니면'Activity' 만 열면 충분할까요? –

답변

3

아마도 매니 페스트 파일에 ASKPAGE 액티비티가 없습니다.

의 AndroidManifest.xml에서 application 태그 안에 추가 :

<activity android:name=".ASKPAGE"> 

편집 :

다음과 같아야합니다 귀하의 getQuestion() 방법 :

public Intent getQuestion() 
{ 
    Intent i = new Intent("com.example.btshome.ASKPAGE"); // Set an action in constructor 
    i.setClass(MainActivity.this, QuestionAsking.class); // Set an Activity class 
    startActivity(i); 
    return null; 
} 

단지 참고 - I 희망 이 방법에서는 항상 null을 반환하는 것을 볼 수 있습니다.

+0

아니요 실제로 매니 페스트 파일에서 이름을 가져 왔습니다. –

+0

다음에 매니페스트 파일을 게시 할 수 있습니까? –

+0

새로운 오류 : 04-23 20 : 31 : 38.371 : E/AndroidRuntime (892) : java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {com.example.btshome/com.example.btshome.QuestionAsking} : java. lang.IllegalStateException : setContentView 외에도 onCreate에서 setBehindContentView를 호출해야합니다. –

0

의도를 처리 할 활동 중 적어도 하나에서 의도 필터를 명시 적으로 선언해야합니다. 자세한 내용은 here을 확인하십시오. 예를 들어 다음과 같이해야합니다.

<activity 
      android:name="com.example.btshome.LoginActivity"> 

      <intent-filter> 
       <action android:name="com.example.btshome.LOGINACTIVITY" />> 

       <category android:name="com.example.btshome /> 
</activity> 
+0

나는 그것을하지 않았다 I ?? –

+0

예. 나는 당신이 매니페스트를 업로드했다는 것을 알지 못했습니다. –

+0

그래서 잘못 생각한거야? –