2012-03-28 3 views
1

putExtra()를 사용하여 정보를 의도로 설정하고 정보가 실제로 존재한다는 것을 디버거에서 확인한 다음 다른 활동을 시작합니다.정보 전달이 의도로 작동하지 않음

startActivity(intent); 

하지만 난 저장된 정보에 액세스하려고 할 때 :

Intent intent = getIntent(); 
Bundle b = intent.getExtras(); 

을 다음 null을 반환은, 사실, 난 의도가에 첨부 된 번들이없는 내 디버거를 참조하십시오.

어떻게 해결할 수 있습니까?


편집 :

이 내가 사용하는 기능은 다음과 같습니다 : 내가 전에 말했듯이

private Intent baseClickFunction(JSONItem item){ 
    Intent i = new Intent(MainActivity.this, ItemActivity.class); 
    i.putExtra("title", item.getProductName()); 
    i.putExtra("date", item.getTimestamp()); 
    i.putExtra("content", item.getFullDescription()); 

    return i; 
} 

mListView.setOnItemClickListener(new OnItemClickListener() 
     { 
      public void onItemClick(AdapterView<?> a, View v,int position, long id) 
      { 

       Intent intent = new Intent(baseClickFunction((JSONItem) a.getItemAtPosition(position)));  

       startActivity(intent); 
      } 
     }); 

, 내 디버거 정보를 확인할 여기 내가 엑스트라를 넣어하는 방법이다 새로운 활동을 시작하기 전에 정말로 내 의도에 부합됩니다.

는 난이하려고 노력 :

Intent i = new Intent(MainActivity.this, ItemActivity.class); 
       i.putExtra("title", ((JSONItem) a.getItemAtPosition(position)).getProductName()); 
       i.putExtra("date", ((JSONItem) a.getItemAtPosition(position)).getTimestamp()); 
       i.putExtra("content", ((JSONItem) a.getItemAtPosition(position)).getFullDescription()); 
       startActivity(i); 

을하며 작업 dosnt

편집 : 나는 내가 "보호 무효 onPostExecute에서이 일을하고있는 리스너를 설정하는 것이 사실 (무효합니까 결과) "는 AsyncTask에 영향을 미칩니 까?

EDIT : 다른 프로젝트에서이 작업을 수행하면 작동하지만이 경우에는 그렇지 않습니다. AsyncTasks, ListViews 또는 tabViews가이 작업에 어떤 영향을 줍니까?

+0

엑스트라를 설정하는 코드를 게시하십시오. –

+0

데이터를 설정하는 위치는 무엇입니까? 데이터를 의도대로 설정하기 위해 사용하는 코드, 전달할 데이터를 제공하십시오. – Triode

+0

다른 프로젝트에서이 작업을 시도하지만 작동하지 않습니다 !!! –

답변

0

startActivity(intent)을 호출하기 전에 추가 기능을 의도에 넣었는지 확인하십시오.

Intent intent = new Intent(...); 
intent.putExtra(...); 
startActivity(intent); 
+0

이미이 작업을 수행하고있는 것 같습니다. 추가 정보가 있기 전에 게시 됨. – prolink007

0

당신이 할 경우 : 당신은 당신이 번들에 값을 추가 한 다음에 번들을 넣어야 번들 사용하려는 경우

intent.putExtra("yourkey", value); 

당신은

Intent intent = getIntent(); 
intent.getIntExtra("yourKey", defaultValue); 

와 PIN이 수 의도와 함께,

intent.putExtras(bundle) 

befo 다시 당신이해야 할

+0

나는 그 모든 일을하고 있으며, 디버거를 점검 할 때 다음 활동을 시작하기 전에 인 텐트에있는 모든 데이터가 내 데이터임을 알지만, 다시 체크하면 데이터가 전혀 없다. –

+0

intent.putExtra (...)를 사용하여 int 값으로 int 값을 집어 넣고 Bundle b = intent.getExtras(); ? – Blackbelt

+0

네, 그게 –

1

startActivity() 다음

mListView.setOnItemClickListener(new OnItemClickListener() 
    { 
     public void onItemClick(AdapterView<?> a, View v,int position, long id) 
     { 
      startActivity(baseClickFunction((JSONItem) a.getItemAtPosition(position))); 
     } 
    }); 

당신은 아마 다음 행 번들을 무시 ...

Intent intent = new Intent(baseClickFunction((JSONItem) a.getItemAtPosition(position)));  

그리고 정말 새로운 의도 때문에 작성에 필요한 아니에요 귀하의 방법은 이미 의도를 반환합니다.

+0

나는 말했던 것과 didin't 일을했다 –

0

추가 된 첨부 파일이없는 새로운 의도를 만드는 중입니다.

엑스트라를 intent i에 붙이고 있지만 intent intent으로 활동을 시작했습니다. 새로운 인 텐트를 만드는 대신 함수에서 반환 된 인 텐트에 사용할 인 텐트를 설정하십시오. 이처럼 :

Intent intent = baseClickFunction((JSONItem) a.getItemAtPosition(position));

희망이 도움이!

+0

나는 이것을했다 : Intent i = new Intent (MainActivity.this, ItemActivity.class); \t \t \t i.putExtra ("title", ((JSONItem) a.getItemAtPosition (position)). getProductName()); \t \t \t i.putExtra ("날짜", ((JSONItem) a.getItemAtPosition (위치)). getTimestamp()); \t \t \t i.putExtra ("content", ((JSONItem) a.getItemAtPosition (position)). getFullDescription()). \t \t \t \t startActivity (i); 그리고 여전히 doftnt work –

+0

나는 당신이 당신의 기능을 혼자 남겨 두는 것을 의미했다. (당신이 그곳의 데이터를 볼 수 있기 때문에 작동하는 것처럼 보이기 때문에) 의도 된 의도가있는 부분 대신에 한 줄의 코드를 사용해라. = 새로운 인 텐트 (baseClickFunction ((JSONItem) a.getItemAtPosition (position))); ' – Barak

+0

나는 그것을 시도하고 그것 didint 일 –

관련 문제