developer tip

onCreate가 호출되지 않았습니다.

copycodes 2020. 12. 26. 15:40
반응형

onCreate가 호출되지 않았습니다.


2 개의 활동이 있습니다. 첫 번째 활동 사용자가 두 번째 활동을 시작하는 버튼을 클릭합니다. 두 번째 활동은 모든 작업을 수행합니다.

다음과 같이 onClickListener 내부 클래스 내부에있는 두 번째 활동을 시작하고 명시 적으로 (FirstActivity.this, Simple.Class) 호출을 시도했지만 같은 일이 발생합니다.

    Intent test = new Intent(arg0.getContext(),Simple.class);
    startActivity(test);

에뮬레이터에서 화면이 두 번째 활동을 호출하는 것처럼 이동하는 것을 볼 수 있지만 내가 얻는 것은 검은 화면 뿐이지 만 레이아웃에서 아무것도로드되지 않습니다. 나는 logcat을 보았고 바인더 스레드 실패 메시지를 보았습니다. 이것은 두 번째 활동의 onCreate 함수이지만 화면이나 logcat에서 로그 함수가 호출되었음을 보여주는 결과를 얻지 못합니다.

    public void onCreate(Bundle savedState)
    {
       Log.d("SimpleActivity","OnCreate Started");

       super.onCreate(savedState);
   setContentView(R.layout.simple);

       Log.d("SimpleActivity","OnCreate Ended");
    }

참고 : 위의 코드에서 super.onCreate (savedState)를 사용하여 OnCreate ()의 기본 생성자를 호출했습니다.


나에게 일어난 일은 잘못된 onCreate방법 을 무시하고 있다는 것 입니다. public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)정말 재정의해야 할 때 재정의했습니다 protected void onCreate(@Nullable Bundle savedInstanceState). 어쩌면 이것은 누군가를 도울 수 있습니다!


onCreate가 호출되지 않고 활동이 파괴되지 않은 경우 어떤 이유로 활동이 중단되면 다음에 인스턴스화되지 않고 대신 재개 될 수 있습니다.

적어도 그것이 바로 지금 내 코드에서 처리하고있는 것입니다. 활동의 수명주기는 좋은 논리적 설명 인 것 같습니다. 그러나 99 %의 시간은 startActivity를 호출 할 때 onCreate에 의존하며 실패하지 않습니다. .

편집 : 물론 활동을 종료 할 때 finish ()를 호출하지 않았기 때문입니다. 도.


이것은 특정 문제와 관련이 없지만 매니페스트 파일에서 활동이 선언되지 않은 경우에도 발생할 수 있습니다.)


super.onCreate(savedState)메서드 를 호출해야합니다 . 활동 문서를 살펴보십시오 .

 public void onCreate(Bundle savedState)
    {
     super.onCreate(savedState);
    }

@Override onCreate 및 추가해야 super.onCreate()합니다

@Override
public void onCreate(Bundle savedState)
{
   super.onCreate(savedState);

   Log.d("SimpleActivity","OnCreate Started");
   setContentView(R.layout.simple);
   Log.d("SimpleActivity","OnCreate Ended");
}

메서드가 AppCompatActivity 또는 Activity에 속하는 경우주의하십시오 .

그것은 당신이 당신의 클래스에 구현 한 것에 달려 있습니다.

수명주기 또는 재정의 메서드를 추가하려면 CTRL+O또는 을 누르는 것이 좋습니다 Code > Override methods. 그러면 메서드가 속한 위치를 볼 수 있습니다.

설명을위한 스크린 샷-Android 스튜디오의 "Methods to Override"대화 상자


매니페스트에서 android : launchMode = "singleTask"제거

참조 URL : https://stackoverflow.com/questions/8514405/oncreate-not-called

반응형