2013-05-14 1 views
0

나는 추상적 내 모델 : MainActivity에서 다음
Android에서이 애플리케이션 컨텍스트를 사용하는 데있어 잘못된 점은 무엇입니까? 이 같은

public class UserInfo extends Application{ 
private int userid; 
public void setUserId(int id) 
{ 
    userid=id; 
} 
public int getUserId() 
{ 
    return userid; 
} 

} 

:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    userinfo=(UserInfo)getApplication(); 
    userinfo.setUserId(1354); 
    .... 
    Intent intent=new Intent(MainActivity.this,VoteActivity.class);     
       startActivity(intent); 
} 
public 
@Override void onResume() 
{ 
    super.onResume(); 
    TextView text=(TextView)MainActivity.this.findViewById(R.id.usernameText); 
    text.setText(userinfo.getUserId()+" "); 
} 

그리고 VoteActivity에 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_vote);   
    userinfo=(UserInfo)getApplication(); 
    Button back=(Button)findViewById(R.id.backButton); 
    back.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      userinfo.setUserId(-100); 
      Intent intent=new  Intent(VoteActivity.this,MainActivity.class); 
      startActivity(intent); 

     }}); 

} 
첫 번째 사용자 정보를 보유하는 클래스 UserInfo있다

결과는 다음과 같습니다. MainActivity를 처음 실행하면 UserInfo의 userid는 1354입니다. 그리고 VoteActivity가 처음 실행될 때 UserInfo의 userid도 1354입니다. 그러나 VoteAcitivy 사용자 아이디에서 MainActivity로 돌아 가면 1354가 -100이어야합니다.이 응용 프로그램 컨텍스트의 사용에는 어떤 문제가 있습니까?

Intent intent=new  Intent(VoteActivity.this,MainActivity.class); 
     startActivity(intent); 

을 그리고 당신은 MainActivity에 ID를 설정 대해 직접 :

+0

두 개의 ''요소를 보여주는 매니페스트를 게시하십시오. – CommonsWare

답변

1

당신은 당신의 온 클릭 방식의 새로운 활동을 시작하고 당신이 (1354)을받을 이유

userinfo.setUserId(1354); 

있다고. MainActivity를 시작하는 대신 클릭하여 Finish를 호출해야합니다.

활동의 스택과 같이 : MainActivity - VoteActivity - MainActivity 나는 당신이 같이 할 생각 : MainActivity 당신이 다시 MainActivity에받을 수 있나요 어떻게 Button

@Override 
     public void onClick(View arg0) { 
      userinfo.setUserId(-100); 
      finish(); 

     }}); 
+0

이것은 확실히 이상한 일이지만 OP가 보는 행동을 설명하지는 않습니다. – CommonsWare

+0

userId를 1354로 직접 설정하면 어떻게 -100이 될 수 있습니까? 이전 활동으로 돌아 가면 -100을 얻을 수있는 경우를 볼 수 없습니다. (아마도 나는 뭔가를 놓치고 있습니다) –

+1

죄송합니다, 틀림없이 옳은 것입니다. 사과! – CommonsWare

0

에 누른 후? 기기의 뒤로 버튼을 누르거나 버튼을 클릭 하시겠습니까? 장치의 뒤로 버튼을 누르면 onClickListener가 호출되지 않으므로 ID가 동일하게 유지됩니다.

0
@Override 
public void onClick(View arg0) { 
    userinfo.setUserId(-100); 
    Intent intent=new  Intent(VoteActivity.this,MainActivity.class); 
    startActivity(intent); 

}}); 

MainActivity를 다시 시작하면 뒤로 버튼을 클릭하십시오. MainActivity onCreate가 다시 실행됩니다. MainActivitysingleInstance으로 표시 되었습니까?