2017-09-30 1 views
1

MainActivity에서 입력을 가져 와서 해당 문자열을 AsyncTask에있는 URL에 배치하여 AsyncTask에 문자열을 전달해야합니다. 두 가지 활동이 있는데, 하나는 MainActivity이고 다른 하나는 fetchData 활동입니다. 내 MainActivity 코드 :mainactivity에서 AsyncTask를 확장하는 활동으로 edittext를 사용하여 문자열 가져 오기

public class MainActivity extends AppCompatActivity { 
Button click; 
EditText text; 
public static TextView data; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    click = (Button) findViewById(R.id.button); 
    data = (TextView) findViewById(R.id.fetcheddata); 
    text = (EditText) findViewById(R.id.editText); 
    String theText = text.getText().toString(); 
    click.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) {fetchData process = new fetchData();process.execute();}});}} 

그리고 내 fetchData 활동 코드는 다음과 같이 진행됩니다

public class fetchData extends AsyncTask<Void,Void,Void> { 
String data =""; 
String dataParsed = ""; 
String singleParsed =""; 
String uriString; 
@Overrideprotected Void doInBackground(Void... voids) { 
    try { 
     URL url = new URL("http://fuelpriceindia.herokuapp.com/price?city=mumbai"); 
     HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
     InputStream inputStream = httpURLConnection.getInputStream(); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     String line = ""; 
     while(line != null){ 
      line = bufferedReader.readLine(); 
      data = data + line;} 
     JSONObject JO = new JSONObject(data); 
     }} 
     catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    }return null;}@Override protected void onPostExecute(Void aVoid){super.onPostExecute(aVoid);MainActivity.data.setText(this.dataParsed);}}` 

내가 URL을 URL url = new URL("http://fuelpriceindia.herokuapp.com/price?city=mumbai"); 도시에서 도시 이름을 얻을 수있는 문자열을 전달하려는 = 도시 이름이 있어요 편집 텍스트에서.

+0

가능한 중복을 변환해야합니다 [와 AsyncTasks에서 변수를 전달하는 방법?] (https://stackoverflow.com/questions/9900834/how-to-pass-variables-in-and-out-asynctasks) – nomag

답변

1

AsyncTask으로 데이터를 전달하는 방법은 여러 가지가 있습니다. 같은 AsyncTask의 매개 변수에

public void fetchData(String city) { 

    } 
  • 패스 값 - -

    1. 당신의 AysncTask 등의 매개 변수가있는 생성자를 만들에

      fetchData process = new fetchData(); 
      process.execute(text.getText().toString()); // Pass parameter 
      

    당신의 AsyncTask이 값을 얻을

    @Override 
    protected Void doInBackground(String...params) 
    { 
        String cityName = params[0]; 
        try { 
        URL url = new URL("http://fuelpriceindia.herokuapp.com/price?city="+cityName); 
         ....... 
    
    } 
    

    의 당신의

    public class fetchData extends AsyncTask<Void,Void,Void> 
    

    public class fetchData extends AsyncTask<String,Void,Void> 
    
  • +0

    대단히 고마워요. 그것은 내 하루를 구했다. 너는 굉장하다. –

    +0

    이것은 어리석은 질문 일지 모르지만 나는 어떻게 할 수 있습니까 @ raahul –

    +0

    Oh @ Rahul –

    관련 문제