2013-07-15 4 views
0

나는 몇 가지 안드로이드 개발을 연습 중이다.android의 새로운 인 텐트를 만드는 것에 대해

I 버튼이 코드를 사용 : 그것은 두 번째 활동을 엽니로

this.detailsBtn = (Button) findViewById(R.id.details_btn); 
    this.detailsBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent k = new Intent(arg0.getContext(), DetailsActivity.class); 
      startActivity(k); 
     } 
    }); 

이 코드가 제대로 작동 나는 두 번째 활동 열리는 주요 활동의 버튼을 만들었습니다. DetailsActivity의 주요 활동으로 돌아가는 버튼도 추가했습니다.

this.mainListBtn = (Button) findViewById(R.id.main_list_btn); 
    this.mainListBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      Intent k = new Intent(arg0.getContext(), MainActivity.class); 
      startActivity(k); 
     } 
    }); 

이 또한 올바르게 작동합니다. 내 질문에 새로운 의도를 생성해야합니까? 버튼을 누를 때마다 새로운 활동을 열려면 시간이 필요합니다.

이미 만든 인 텐트에 다시 액세스하는 대신 해당 인 텐트에 액세스하는 방법이 있습니까?

+0

http://stackoverflow.com/questions/ 1624338/android-return-to-previous-activity-without-calling-finish http://developer.android.com/reference/android/content/Intent.html#setFlags%28int –

+0

'Intent' 객체를 생성하면 ' 상당한 시간을 들이지 마십시오. 액티비티를 여는 데 걸리는 시간은'onCreate()','onStart()'및'onResume()'에있는 코드에 의해 사용됩니다. 코드를 최적화하려는 경우, 거기를보고 싶을 수도 있습니다. –

답변

2

만이 또한 제대로 작동 DetailsActivity

this.mainListBtn = (Button) findViewById(R.id.main_list_btn); 
    this.mainListBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      finish(); 
     } 
    }); 

finish()를 호출합니다. 내 질문에 새로운 의도를 작성해야합니까? 버튼을 누를 때마다 새 활동을 열 때까지 시간이 필요해 보이는 것처럼 보입니까?

현재 응용 프로그램이 정상적으로 작동합니다. 그러나 버튼을 누를 때마다 새로운 액티비티가 애플리케이션 스택에 추가 될 것입니다. 그것은 귀하의 경우에 발생해서는 안됩니다.

+0

완벽하게 작동하며 내 앱에 필요한 것이 맞습니다. 세부 정보 목록이 있으므로 검토 후 세부 정보 활동을 닫고 파괴해야합니다. – Vlad

+0

Gud .. 문제가 해결되었음을 알았습니다 :) –

1

이전에 연 작업에 액세스 할 수 있으며 onBackPressed()를 호출 할 수도 있습니다. 기능을 이전 활동으로 보냅니다.

+1

'onBackPressed()'를 호출하여 'Activity'를 끝내지 마십시오. 'finish()'를 호출하면됩니다. 'onBackPressed()'는 안드로이드 프레임 워크에 의해 호출됩니다. –

+0

finish()는 현재 작업을 소멸시킵니다. startActivity()를 호출 한 후에 finish() 메서드를 호출하면 onBackPressed()를 호출하면 안되며 이전 작업이 소멸 되었기 때문에 작동하지 않습니다. – KEYSAN

+0

'onBackPressed()'를 호출하면, 현재 활동에서'finish()'를 호출하는 것뿐입니다. 하지만 제가 말했듯이,이 메소드는 당신의 행동에 의해서가 아니라 안드로이드 프레임 워크에 의해 호출되도록되어 있습니다. 필요에 따라 활동을 ** 그것을 덮어 쓸 수 있도록 ** 사용할 수 있으므로 ** 전화 할 수 있습니다 **. –

1

둘 다 활동이 존재하는 것으로 마무리를 (전화 싶지 않아), 당신은 단순히 사용 전면 기존의 활동을 다시 가져올 수 원하는 경우

Intent i = new Intent(getActivity(), B.class); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
getActivity().startActivity(i); 
관련 문제