2013-10-12 3 views
0

버튼 클릭 이벤트에서 setContentView (R.layout.activity_main); 그것은 올바르게 작동합니다.Android 레이아웃이 두 ​​번로드되었습니다.

Intent 및 startactivity 명령을 사용하여 새로운 활동을 시작하려고하면 레이아웃을 두 번로드하면 레이아웃이 올바르게로드 된 것처럼 보이고 1 초 동일한 레이아웃이 다시로드됩니다.

시작하기 전에 작업이로드되었습니다. 내가이 줄을 추측하고있어

show.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    {   
     String selected = spinner0.getSelectedItem().toString(); 
     if(selected.equals("Item 2")) 
     { 
      Intent intent = new Intent(second_layout.this,MainActivity.class); 

      setContentView(R.layout.activity_main); 
      startActivity(intent); 
     } 
    } 
}); 
+1

를 시작하기 전에 왜 이전 활동 레이아웃을 변경하여 새로운 활동? – Kuffs

+0

'onClick' 리스너에서 레이아웃을 다시 설정하는 이유는 무엇입니까? – GrIsHu

+0

미안하지만이 레이아웃에 대해서는 언급하지 않았습니다. 두 번째 레이아웃은 내 주동력이 아닙니다. – user2265473

답변

1

은 문제 없어입니다

setContentView(R.layout.activity_main); 

setContentView 당신이 activity_main 현재 레이아웃을 변경하고, 그래서 그냥, 현재 활동의 레이아웃이 변경됩니다, 다음을 MainActivity 클래스의 Intent을 엽니 다.

해당 행을 삭제하면됩니다.

+0

'MainActivity'를 시작하면 레이아웃이 변경됩니다. 'setContentView (R.layout.activity_main);을 호출하는'MainActivity'에'onCreate' 메소드가 있어야합니다. – ssantos

+0

괜찮은 것 같아요. 나는 지금 노력하고있어. 네가 고맙다 고 말한 것처럼 효과가있어! – user2265473

0

새로운 활동을 시작할 때 의도를 시작하는 동안 setContentView가 필요하지 않습니다.

시작하려는 인 텐트에는 레이아웃을로드하기위한 코드가 있습니다. 그러니이 줄을 제거하십시오.

MainActivity.class에 이미 setContentView (R.layout.activity_main)가 작성되어 있으므로 필요한 레이아웃을 표시하기에 충분합니다. 따라서 의도를 시작하는 동안 포함시킨이 여분의 줄을 제거하십시오.

+0

그래, setcontentview를 사용하여 새로운 활동을 시작한다. 두 번로드 할 수있다. – user2265473

0

두 번째 활동을 시작하기 전에 첫 번째 활동에서 두 번째 활동 레이아웃을 설정할 수 없습니다. 두 번째 활동의 onCreate() 메소드에서 자동으로 설정됩니다. 따라서 MainActivity'sonCreate() 방법에 setContentView(R.layout.activity_main);을 써야합니다. 그냥 onClick 리스너에서 제거하십시오.

그래서 다음과 같이 당신의 onClick에 쓰기 :

show.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    {   
     String selected = spinner0.getSelectedItem().toString(); 
     if(selected.equals("Item 2")) 
     { 
      Intent intent = new Intent(second_layout.this,MainActivity.class); 
      startActivity(intent); 
     } 
    } 
}); 

그리고에 당신의 MainActivity 당신은 다음과 레이아웃을 설정해야합니다 :

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     } 
} 
+0

그 코드는 내 두 번째 레이아웃 위에 쓰지 않습니다. 내 주동력이 아니기 때문에 처음에 쓰는 것을 잊어 버립니다. – user2265473

+0

@ user2265473 도움이된다면 답을 올리십시오. 감사.. – GrIsHu

관련 문제