public void onClick(View v) {
  Play play_a = (Play)Play.PlayAct;
      Rec rec_a = (Rec)Rec.RecAct;
      Story story_a = (Story)Story.StoryAct;
  
      switch(v.getId()){
 
  case R.id.imageButton1:
   Intent play = (new Intent(this, Play.class));
   play.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(play);
   //finish();
  
  case R.id.imageButton2:
   Intent rec = (new Intent(this, Rec.class));
   rec.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(rec);
   //finish();
  
  case R.id.imageButton3:
   Intent story = (new Intent(this, Story.class));
   story.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(story);
   //finish(); 
  }
 }


MainActivity

 

  public void onBackPressed() {
  Intent intent = new Intent(this, MainActivity.class);
  //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP ); 
  //startActivity(intent);
  finish();
  super.onBackPressed();
     return;
 }
Srory, Rec, Play 에 있는 백버튼 후킹

         <activity
            android:name="com.example.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

Mainfest.xml 中 MainActivity부분

 

06-09 15:00:39.883: I/ActivityManager(60): Displayed com.example/.MainActivity: +1s78ms
06-09 15:00:43.442: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Rec } from pid 322
06-09 15:00:43.452: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Story } from pid 322
06-09 15:00:43.572: E/MediaPlayer(322): prepareAsync called in state 8
06-09 15:00:43.622: D/dalvikvm(322): GC_EXTERNAL_ALLOC freed 60K, 52% free 2584K/5379K, external 1806K/2137K, paused 50ms
06-09 15:00:44.232: I/ActivityManager(60): Displayed com.example/.Story: +730ms
06-09 15:01:00.072: W/ActivityManager(60): finishReceiver called but no pending broadcasts
06-09 15:01:05.482: D/AudioSink(33): bufferCount (4) is too small and increased to 12
06-09 15:01:05.703: W/AudioFlinger(33): write blocked for 87 msecs, 1 delayed writes, thread 0xc658
06-09 15:01:05.912: D/dalvikvm(322): GC_EXTERNAL_ALLOC freed 20K, 52% free 2615K/5379K, external 3331K/4129K, paused 173ms
06-09 15:01:10.723: W/AudioFlinger(33): write blocked for 74 msecs, 48 delayed writes, thread 0xc658
06-09 15:01:13.352: W/KeyCharacterMap(322): No keyboard for id 0
06-09 15:01:13.352: W/KeyCharacterMap(322): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
06-09 15:01:13.432: I/ActivityManager(60): Starting: Intent { cmp=com.example/.MainActivity } from pid 322
06-09 15:01:13.852: I/ActivityManager(60): Displayed com.example/.MainActivity: +392ms
06-09 15:01:18.892: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Rec } from pid 322
06-09 15:01:18.902: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Story } from pid 322
06-09 15:01:18.962: E/MediaPlayer(322): prepareAsync called in state 8
06-09 15:01:19.432: I/ActivityManager(60): Displayed com.example/.Story: +503ms
06-09 15:01:34.257: I/ActivityManager(60): Starting: Intent { cmp=com.example/.MainActivity } from pid 322
06-09 15:01:34.632: I/ActivityManager(60): Displayed com.example/.MainActivity: +357ms
06-09 15:01:35.682: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Rec } from pid 322
06-09 15:01:35.702: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Story } from pid 322
06-09 15:01:35.763: E/MediaPlayer(322): prepareAsync called in state 8
06-09 15:01:36.272: I/ActivityManager(60): Displayed com.example/.Story: +561ms
06-09 15:01:36.992: I/ActivityManager(60): Starting: Intent { cmp=com.example/.MainActivity } from pid 322
06-09 15:01:37.572: I/ActivityManager(60): Displayed com.example/.MainActivity: +537ms
06-09 15:01:38.252: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Story } from pid 322
06-09 15:01:38.432: E/MediaPlayer(322): prepareAsync called in state 8
06-09 15:01:38.922: I/ActivityManager(60): Displayed com.example/.Story: +624ms
06-09 15:01:39.672: I/ActivityManager(60): Starting: Intent { cmp=com.example/.MainActivity } from pid 322
06-09 15:01:39.852: I/dalvikvm(60): Jit: resizing JitTable from 1024 to 2048
06-09 15:01:40.072: I/ActivityManager(60): Displayed com.example/.MainActivity: +366ms
06-09 15:01:41.192: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Play } from pid 322
06-09 15:01:41.222: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Rec } from pid 322
06-09 15:01:41.222: I/ActivityManager(60): Starting: Intent { flg=0x40000000 cmp=com.example/.Story } from pid 322

로그캣

 

Starting : Intent  3연속 

액티비티를 죽이려고 별짓을 다했던 주석의 흔적입니다 ..ㅠㅠ

Main -> Story -> Main 으로 오려하면  Rec가 뜨거나 Story가 뜹니다.

MediaPlayer에서 에러뜨는건 초기화안해서 그런거같은데 이게 Intent랑 관련이 있나요

Intent.setFlag로 Top/No History 줘봤는데 백버튼으로 Main은 잘 돌아오는데 

Main에서 아무 버튼이나 클릭하면 Rec나 Story등  한개만 전환이됩니다-_-;  (Rec를 눌러도 Story, Play를 눌러도 Story)

어떻게 해야되나요  부탁드립니다.