2012-04-14 2 views
1

한 활동에서 다른 활동으로 개체를 전송하려고합니다. 첫 수업 시간에.getSerializableExtra를 사용하여 한 클래스에서 다른 클래스로 객체를 전송하십시오.

나는 다음과 같은

의도 intenttt을 뒀다;

의도 intentttt.putExtra ("user_searchh", cur.toString());

여기서 커서는 커서의 개체입니다. 두 번째 클래스로 전송하려고합니다. 내 두 번째 클래스

나는

커서 C = (커서) getIntent() 다음 넣어 가지고 getSerializableExtra를 ("user_searchh.");

위의 코드없이 두 클래스를 모두 실행하려고 시도했지만 올바르게 작동합니다.

그러나 위 코드를 배치하면 강제 종료 오류 메시지가 나타납니다. DDMS에서

I가 50 표를 구비 How to pass an object from one activity to another on Android

에서 teke 기준을 ... ... ... NulpointerException DirectCursorDriver 같은 에러 .... 등이있다. 가능한 경우 도움을 받으십시오.

덕분에 ...

+1

을 당신은 다시 캐스팅 다음 문자열로 변환 된 커서를 통과하는 것을 시도하고있다 커서가 너무 다양한 수준에서 잘못되었다고 생각합니다. 심각한 재 설계가 필요합니다. – Shubhayu

+0

그러면 커서 개체를 하나의 활동에서 다른 활동으로 전송하고 싶습니다. –

+0

커서에서 원하는 것을 선택하면 도움이 될 것입니다. – Herry

답변

-1

당신은 그래서 작동 코드 아래하려고이 코드

에서 String 객체를 뒀다.

Intent intentttt.putExtra("user_searchh", cur.toString()); 

String str=getIntent().getStringExtra("user_searchh"); 

for Pass Cursor 당신은 아래처럼 하나의 클래스를 만들 필요가 있습니다.

public class MyCursor implements Serializable{ 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
Cursor mCursor; 

public void setCursor(Cursor paramCursor){ 
    mCursor=paramCursor; 
} 

public Cursor getCursor(){ 
    return this.mCursor; 
    } 
} 

지금 전

MyCursor mObject=new MyCursor(); 
    //You can set your Cursor in Below code 
    mObject.setCursor(mCursor); 
    mIntent.putExtra("mCursor",mObject); 

이제 다른 활동에 아래 코드로 커서를 얻을 수 아래의 코드로 초기화 PutExtra에 객체를 넣어.

MyCursor mGetCursor; 
    mGetCursor=(MyCursor) getIntent().getSerializableExtra("mCursor"); 
    if(mGetCursor!=null){ 
     mGetCursor.getCursor(); 
    } 
+0

하지만,이 str은 단지 문자열 변수입니다 .... 데이터를 다시 얻는 방법 커서 개체에서? –

+0

당신의 노력에 감사드립니다, 나는 구글에서 모든 고집을 시도하지만, 거기에 오류가 작동하지 않습니다 NullPointerException ... –

+0

그 가장 확실하게 작동하지 않습니다! 직렬화 가능함에 커서를 배치하면 어떻게 든 직렬화됩니까? 네츠! –

-1
//For passing : 
intent.putExtra("MyKey", YourObj); // From First Activity 

// to retrieve object in second Activity 
Object obj = getIntent().getSerializableExtra("MyKey"); //In Second Activity 

이제 개체 변환 할 수 있습니다. 희망이 도움이됩니다. 내가 그것을 가지고

+0

작동하지 않습니다 .... 커서를 놓으면 강제로 닫을 수 있습니다. c = (Cursor) getIntent(). getSerializableExtra ("user_searchh"); 내 두 번째 클래스에서 ... –

+0

@MunjalUpadhyay : 이것을 추가하십시오. ** Cursor cr = (Cursor) obj; ** 그리고 cr로 작업하십시오. – Bhavin

+0

커서 cr = (커서) getIntent(). getSerializableExtra ("MyKey"); 나는 그것을했다. 그러나 그것은 일하지 않았다. .. –

0

....

우선

,, 당신이 객체를 문자열로 변환 할 때 .. 다시 객체로 캐스팅 할 수 없다 ..

것은 둘째로, 오히려 객체를 전송하는 하나의 액티비티에서 다른 액티비티로, 하나의 액티비티에서 두 번째 액티비티로 문자열을 전송하고 두 번째 액티비티에서 물건을 계산하는 것이 바람직하다.

나는이 의도 개체를 사용

나는 두 개의 실수를 다음 만든 또 다른 활동 ...

1) I입니다 만드는 중이라서 첫 번째 실수 .... 하나 개의 활동에서 문자열을 transfering 동안 .. 예

의도 i = 새로운 의도 (user_search2.this, rest_name_share.class); ;

 Intent i1= new Intent(); 
    i1.putExtra("restaurant_email", email_of_restaurant); 

    startActivity(i); 
      startActivity(i1); 

오히려처럼

의도 I = 새로운 의도 (user_search2.this, rest_name_share.class) 아래 작성해야

i.putExtra("restaurant_email", email_of_restaurant); // here email_of_restaurant is a String object .. 
    // you can aslo put more than one strings... 
    startActivity(i); 

2) 두 번째 실수는 내가 클래스 수준에서 getStringExtra()를 호출한다는 것입니다.

가 그것은에서 onCreate() 호출 될에서 onCreate() 메소드

재료로 호출해야하는

의도 의도 = getIntent()이고;

String email_of_restaurant = intent.getStringExtra ("restaurant_detail"); 아니다 모든

감사 ,, ....

0

어떻게 직렬화 작품, 당신은 객체가 문자열로 변환됩니다 근본적인 수준에서 그 권리를하지만, 그것은 단지 전화 OBJ보다 훨씬 더 복잡 .toString();

인 텐트를 통해 전달할 수있는 유일한 개체는 Serializable interface을 구현하는 개체입니다.

커서에 전달해야하는 정보가있는 경우이를 가져 와서 일종의 Serializable 객체로 래핑하십시오.

0

OMG. 이것은 질문의 아주 작은 재앙 영역입니까?

OP 문제는 간단합니다. String을 Intent에 넣은 다음 Serializable을 검색하려고합니다. String은 확실히 Serializable이지만 Cursor 로의 캐스트는 작동하지 않습니다.

도움이 될만한 시도가 있다면, 올바른 것 대신에, 일반적으로 이것은 단지 작동하지 않을 것이라고 지적 할 수 있습니다. Parcel 또는 Serialize 커서 (데이터베이스 연결을 나타내는 객체)는 모두 불가능합니다. 잠시 동안 커서의 전체 데이터를 의도로 마샬링하는 것이 무엇을 의미하는지 생각해보십시오. 하지만 실제로, 어떤 종류의 Binder 마법을 사용하기 때문에, 안드로이드 을 지원합니까 (나는 링크를 포함 시키겠다. 그러나 그것을 금지하고있다). 그러나 아니오 : 커서를 의도에 넣을 수 없습니다. 조금도. 이제까지.

마지막으로, 약 3 개의 대답이 있지만, 누군가는 광기를 멈추고 "WTF, Dude ??? 무엇을하려고합니까?"라고 물었습니다.

  • 당신은 모델 객체 트리에 필요한 데이터를 당겨
  • 가 다시 실행 쿼리 (이이었다 그것에 참조를 전달 : "여기 영업 이익은 일을하려고 무엇이든 성취 할 수있는 몇 가지 방법 위의 제안하지만 지원 이유)와
  • 전역에 커서를 놓고 두 활동에서 참조하십시오.
관련 문제