2012-09-26 6 views
1

나는 android에서 초보자입니다. 나는 첫 번째 활동에서 하나의 활동을 호출하는 간단한 코드를 가지고 있으며 두 번째 활동에는 두 번째 활동이 완료되고 첫 번째 활동이 시작되는 버튼이 있습니다. 첫 번째 작업 (onResume은 항상 호출 됨)에서 onCreate 메서드가 호출되지 않으므로 onCreate 메서드를 첫 번째 작업에서 호출 할 수 있습니까? 매니페스트 파일에서 일부 항목을 편집 했습니까? 다음두 번째 활동 완료 후 첫 번째 활동에서 onCreate 메소드를 호출하는 방법 (첫 번째 활동에서 호출 됨)

내 코드

public class Activity1 extends Activity { 
    /** Called when the activity is first created. */ 

TextView mTextView ; 

Button b1; 
static int count=0; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 



    mTextView = (TextView) findViewById(R.id.textView2); 

    if (savedInstanceState == null) { 
     mTextView.setText("Welcome to HelloAndroid!"); 
    } else { 
     mTextView.setText("Welcome Back!"); 
     System.out.println("count------>"+ count); 
    } 



    final Intent i = new Intent(this,activity2.class); 
    b1 = (Button) findViewById(R.id.button1); 
    b1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      startActivity(i); 

     } 
    }); 

} 


@Override 
public void onResume() 
{ 
    super.onResume(); 
    System.out.println("inside Resume"); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     super.onSaveInstanceState(savedInstanceState); 

     savedInstanceState.putBoolean("MyBoolean", true); 
     savedInstanceState.putDouble("myDouble", 1.9); 
     savedInstanceState.putInt("MyInt", 1); 
     savedInstanceState.putString("MyString", "Welcome back to Android"); 
     count++; 
    } 


    @Override 
    public void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 

     boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); 
     double myDouble = savedInstanceState.getDouble("myDouble"); 

     System.out.println("MyBoolean"+ myBoolean); 
     System.out.println("myDouble"+ myDouble); 
    } 


} 

이며, 여기

public class activity2 extends Activity{ 

TextView textview; 
Button b1; 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main2); 

     textview = (TextView) findViewById(R.id.textView1); 

     textview.setText("in activity2"); 

     b1 = (Button) findViewById(R.id.button1); 

     b1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       finish(); 
      } 
     }); 
} 
} 

어떤 일 activiy 나에게 감사를 도와주세요 1에 의해 호출되는 제 2 차 활동이다! 첫 번째 활동에서

답변

1

, startActivity(i); 후 두 번째 활동에서 finish()를 호출하면되지 인스턴스가 활동을 시작 .When finish()를 호출하기 전에 먼저 활동을 시작, 그것은 onCreate가 호출 될 것입니다.

편집 : 먼저 활동의 상태를 저장하려면

, 당신이 의도를 추가로이 번들을 추가 번들을 만들 얼려서에 대한 귀하의 의견의 상태를 추가 할 수 있습니다 두 번째 Activity.In을 시작합니다 두 번째 액티비티 액티비티에서이 엑스트라를 가져오고 처음 액티비티를 시작하려는 액티비티 (예 : startFirstActivity intent)는 해당 액티비티를이 인 텐트 (startFirstActivity intent)에 추가합니다. onCreate 액티비티의 첫 번째 액티비티에서는 getIntent().getextras()을 통해 액티비티를 가져옵니다. 그리고 그것이 널이 아니라면, 그것으로부터 당신의 뷰의 상태를 추출하고 ID로 찾은 후에 뷰 상태를 설정하십시오.

+0

이봐, 당신이 올바른지 ... 고맙습니다! 하지만 내가 할 때 onSaveInstanceState이 실행되지 않습니다. 그래서 나는 첫 번째 활동에서 "finish()"를 제거하고 onSaveInstanceState가 실행됩니다. onCreate alwyas의 "savedInstanceState"는 null로 남습니다. "savedInstanceState"가 2 번째 activity.Can에서 돌아 왔을 때 null이 아니어야합니다. 제발 도와 주실 수 있습니까? –

+0

@ user1491193 내 편집 내용을 보시겠습니까? 텍스트보기 용으로 만 텍스트를 설정하고 싶다면 ...? – hasanghaforian

+0

@ hasanghaforian : 나는 그 텍스트를 보여주고 싶지 않습니다. ("Welcome back!"). 그 savedInstanceState를 사용하고 싶습니다. 도와 주실 래요? –

0

그냥 finish()를 사용하십시오. 후 Activity1에서 finish() 전화 activity2에 이동하기 전에 사용하는 두 번째 activity2 버튼 클릭이 코드를

0

활동 1에서 startActivity를 (내가) 전 statActivity();

b1.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     Intent i = new Intent(Activity2.this ,Activity1.class); 
     startActivity(i); 
    } 
}); 
관련 문제