-1

Listingview를 포함하는 OverviewActivity가 있습니다. 항목을 선택하면 DetailActivity로 이동하기위한 의도가 만들어지고 int를 전달합니다.Android : 깊은 계층 구조에서 돌아 왔을 때 의도와 함께 전달 된 데이터가 사라집니다.

이 int는 개인 변수에 할당되며 데이터베이스를 쿼리하는 데 사용됩니다.

DetailActivity 코드 : DetailActivity에서

private int mIssueId; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_issue_detail); 

    mIssueId = getIntent().getIntExtra(IssueOverviewFragment.INTENT_ISSUE_ID, -1); 
    ... 
} 

은 내가 GraphActivity에 갈 수 있습니다. 그러나 GraphActivity에서 upButton을 누르면 DetailActivity에서 변수가 -1이되어 데이터베이스가 제대로 쿼리 될 수 없기 때문에 응용 프로그램이 충돌합니다.

계층 구조는 다음과 같습니다 OverviewActivity -> DetailActivity -> GraphActivity

GraphActivity 코드 :

protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_graph); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     ... 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main_detail, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_logout: { 
      Utility.redirectToLogin(this); 
      break; 
     } 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

가 어떻게이 DetailActivity 내 mIssueId 속성의 값을 유지합니까?

+0

활동 코드를 게시하십시오. "위로"버튼 기능을 무시하고 있습니까? –

+0

어쩌면 어딘가에 의도를 수정하고 전체 활동 코드를 올리십시오. –

답변

0

처럼 보일 것이다. Activity1이 Activity2로 제어를 넘겨 주면 주로 Activity의 동작과 관련됩니다.

복잡한 계층에서 공유해야하거나 전체 앱에서 사용할 수있는 정보가있는 경우 지속성이 필요한 경우 공유 환경 설정 중에서 선택하거나 앱이 실행되는 동안 데이터 만 필요할 경우에는 단일 클래스를 사용하십시오 실행 중입니다.

public class AppData { 
    private static AppData ourInstance = new AppData(); 

    public int score; 

    public static AppData getInstance() { 
    return ourInstance; 
    } 
} 

그리고 액세스 방법 :

AppData.getInstance().score = 100; 

는 희망이 도움이

은 전체 응용 프로그램에 사용할 수에 정보를 유지하는 싱글 톤 클래스에 대한 샘플입니다.

0

DetailActivity에 인 텐트를 가져 오는 동안 문제가 발생하여 기본값으로 표시되는 것처럼 보입니다. 당신은

mIssueId = getIntent().getExtras().getInt(); 

와 약간의 요청을 깨는 시도 할 수 있었다 그러나 나는 문제가 당신이 의도로 INT 퍼팅하는 방법으로 아마 생각합니다.

은 의도 활동 사이에 정보를 전달하고자

Intent intent = new Intent(context, DetailActivity.class); 
intent.putExtra(IssueOverviewFragment.INTENT_ISSUE_ID, mIssueId); 
startActivity(intent); 
+0

이 인 텐트는 IssueOverviewFragment에서 가져온 것으로 아무런 문제가 없습니다. 그러나이 문제는 GraphActivity에서 DetailActivity로 돌아가서이 의도 된 값이 이전에 얻은 값을 유지하지 못하는 경우입니다. – Matt