마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

asyncTask Intent문제..

0 추천
package com.mungnyange.activity.membership;

import org.json.JSONException;
import org.json.JSONObject;

import com.mungnyange.activity.R;
import com.mungnyange.classes.LoginProcess;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;

public class Join extends Activity implements OnClickListener{

 private EditText membership_id;
 private EditText membership_password;
 private RadioGroup rg_patkind;
 private Button bt_join;
 
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     // TODO Auto-generated method stub
     setContentView(R.layout.activity_join);
     
     membership_id = (EditText)findViewById(R.id.membership_id);
     membership_password = (EditText)findViewById(R.id.membership_password);
     rg_patkind= (RadioGroup)findViewById(R.id.rg_patkind);
     bt_join = (Button)findViewById(R.id.bt_join);
     bt_join.setOnClickListener(this);
 }
 
 @Override
 public void onClick(View view) {
  // TODO Auto-generated method stub
  
  if(view.getId() == R.id.bt_join){
   try {
    if(membership_id.getText().length() <= 0 || 
     membership_password.getText().length() <= 0){
     
    }else{
     String patkind = "";
     if(rg_patkind.getCheckedRadioButtonId() == R.id.rb_dog){
      patkind = "dog";
     }else{
      patkind = "cat";
     }
     
     JSONObject ob = new JSONObject();
     ob.put("url", "http://www.wizcompany.com/gbid/app/dataset/userjoin.php");
     ob.put("membership_id", membership_id.getText());
     ob.put("membership_password", membership_password.getText());
     ob.put("membership_patkind", patkind);
     
     new LoginProcess().execute(ob);
    }
    
   } catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   
  }
 }
}


	

JOIN activity입니다..

 

public class LoginProcess extends AsyncTask<JSONObject, String, String> {

 @Override
 protected String doInBackground(JSONObject... jsonpamras) {
  // TODO Auto-generated method stub
  String res ="";
  try{
   HttpClient httpclient = new DefaultHttpClient();
   HttpPost httppost = new HttpPost(jsonpamras[0].getString("url"));
   List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
   nameValuePairs.add(new BasicNameValuePair("params", jsonpamras[0].toString()));
   httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
   HttpResponse response = httpclient.execute(httppost);
   
   HttpEntity entity = response.getEntity();
   
   if(entity != null){
    res = EntityUtils.toString(entity);
   }
 
  }catch (Exception e) {
   // TODO: handle exception
   Log.d("Errorlog", "ItemDataLoad.class : run = " + e.getMessage());
  }
  return res;
 }
 @Override
 protected void onPostExecute(String result) {
  // TODO Auto-generated method stub
  super.onPostExecute(result);
  
 }
 
}
	

asynctask class입니다..

 

이렇게 따로 클래스로 뺴서 구현햇는데요..

 

onPostExecute 에서 intent를 해줘야 결과값을 받아서 체크후 넘겨줄수 잇다고 알고 잇는데..

저곳에서는 클래스를 따로 빼고 activity가 상속이 안되어있어서  getapplication이 안먹더라구요..

이부분을 어떻게 해결해야 할까요?? 아니면 그냥 JOIN activity안에서 돌려야 되는건가요??

힌트를 주세요.. handler를 사용 하자니.. join activity와 연결되는 부분이 없어서 사용이 어려울것 같구요..

힌트를 주십시오 고수님들 ㅠ

 

mamongs (4,050 포인트) 님이 2013년 5월 13일 질문
내부클래스 아니면 context넘겨 받아야죠.

1개의 답변

0 추천
비효율 적인 방법인지는 잘 모르겠지만;;

생성자를 만드셔서 거기에 던지셔도 될것 같아요 ㅋ
갈무리 (12,430 포인트) 님이 2013년 5월 13일 답변
그냥 join activity안에 구현하는게 나을까요?ㅜㅜ
private Context context = null;
public LoginProcess (Context context){
       this.context = context;
}

요렇게 하시면 될것 같네요
...