2013-07-17 2 views
0

NfcScannerActivity라는 기본 메뉴 화면이있는 앱이 있습니다. 현재는 매니페스트에 실행 모드 (표준)가 없습니다. getRota를 클릭하면 매니페스트에 'singleTask'로 정의 된 로타 화면으로 이동하며 단순히 웹 콜에서 가져온 데이터의 목록보기입니다.인 텐트 및 onNewIntent

rota 화면에서 options 메뉴 바에서 nextRota를 클릭 할 수 있습니다. 이런 일이 발생하면 메뉴 화면 (NfcScannerActivity)을 지정하는 인 텐트가 시작되어 웹 콜이 다음 날의 로타 데이터를 가져 오는 위치가됩니다. 일단 데이터가 검색되면 로타 스크린이 다시 시작됩니다.

이 모든 것이 제대로 작동하지만 앱에 메뉴 화면의 인스턴스가 두 개 이상 있기 때문에 몇 가지 문제가 있음을 확신합니다. NfcScannerActivity를 'SingleTask'로 지정하면 다음 로타를 클릭 할 때 "NEXT_ROTA"인 텐트 액션을 처리하지 않은 것처럼 메뉴 화면에 유지됩니다.

NfcScannerActivity 활동에서 onNewIntent를 재정의해야 할 수도 있음을 이해합니다.

어떻게 처리하나요? 나는 다음을 시도했다.

@Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     setIntent(intent); 
    } 

.

'NEXT_ROTA'의도 동작을 처리하지 않는 것 같습니다. 고마워.

[EDIT1]

이 사용자가 옵션 메뉴에서 next_rota 클릭하면 내가 로타 활성을 가지고있는 것이다.

Intent i = new Intent(this, NfcscannerActivity.class); 
      i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      i.putExtra("nextRota", nextDay); 
      i.setAction("NEXT_ROTA"); 
      startActivity(i); 

.

다음 NfcScannerActivity의 onCreate에서 나는 다음과 같은 것을 가지고있다.

if(intent.getAction().equalsIgnoreCase("NEXT_ROTA")){ 

      Log.e(TAG, "next rota action"); 
      String date = intent.getStringExtra("nextRota"); 



      getNextRota(date); 


     } 

.

getNextRota (date)는 웹 호출이 다음 로타의 데이터를 가져 오도록 AsyncTask를 호출합니다. onPostExecute에서는 다음을 수행합니다.

Intent intent = new Intent(NfcscannerActivity.this, 
          GetRota.class); 
      Bundle b = new Bundle(); 
      b.putSerializable("rotaArray", rotaArray); 


      intent.putExtra("rotaArrayBundle", b); 
      startActivity(intent); 

.

그래서 저는 onCreate 내부의 NfcScannerActivity에서 'NEXT_ROTA'인 텐트 액션을 이미 처리하고 있습니다. onNewIntent에서 동일한 작업을 수행해야합니까?

답변

0

보십시오 무엇을 상기해야 할 것은 인 NfcScannerActivity

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    if(intent.getAction().equals("NEXT_ROTA")){ 
     String date = intent.getStringExtra("nextRota"); 
     getNextRota(date);  
    }  
} 

에서

Intent intent = new Intent(<rota screen activity>, NfcScannerActivity.class); 
intent.setAction("NEXT_ROTA"); 
//this brings the previous existing activity to the front of the stack 
//instead of creating a new one 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

"의도는 메뉴 화면을 지정 시작될 때"로타 스크린 활동에

다음 원하는만큼 많은 로타 스크린을 만들 수 있지만 NfcScannerActivity 만 있으면됩니다.

+0

안녕하세요, 제발 제발 좀 봐 주 시겠어요. thanks – turtleboy

+0

예 onNewIntent에서 동일한 작업을 수행해야하며 onNewIntent가 호출되면 onCreate가 호출되지 않습니다. – triggs

+0

도움 주셔서 감사합니다. – turtleboy