2017-04-16 6 views
0

変数 'election_id'をインテントから設定しようとしています。私はいくつかのJSONを取得するためにPHPのURLに解析するためにIDを使用する必要があります。私はバックグラウンドタスクで使用されるように、以前のクラスに割り当てられた選挙のIDを等しくする変数を設定して行うことができるようにしたいもの:現時点ではバックグラウンド(非同期)タスククラス(Java/Android)でアクセスするクラスメソッドの変数を設定します。

public class AdminFinishCandidateActivity extends AppCompatActivity { 

String json_string; 
String json_string_result; 

String election_id; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_admin_finish_candidate); 

    System.out.println("creating"); 

    Bundle electionData = getIntent().getExtras(); 
    if (electionData==null) { 
     return; 
    } 

    election_id = electionData.getString("electionId"); 

} 



public void getJson(View view){ 

    new BackgroundTask().execute(); 

} 


class BackgroundTask extends AsyncTask<Void,Void,String> { 



    String json_url="http://192.168.56.1/dan/db/getjson.php?election_id=" + election_id; 


// code to retrieve JSON 
    } 
} 
} 

、election_idは私のonCreateに割り当てられていますしかし、私はBackgroundTaskクラスの中でこのメソッドからアクセスできないことを知っています。そこでは、String json_urlを定義しています。このクラスでelection_id変数を呼び出せるようにするにはどうすればよいですか?インテントエクストラを取得するメソッドは、このクラスでは機能しません。コードをJSONコードと同じように実行すると、何も検索されません。ありがとう。

答えて

1

次のように、AsyncTaskに文字列を渡すことができます。今すぐ

public class BackgroundTask extends AsyncTask<String,Void,String>{ 

    @Override 
    protected String doInBackground(String... params) { 
    String json_url="http://192.168.56.1/dan/db/getjson.php?election_id=" + params[0]; 

     //perform network operation and return response 
     return response; 
    } 

    @Override 
    protected void onPostExecute(String res){ 
     //Batman Rocks 
    } 
} 

次のように作業を行います。

new BackgroundTask().execute(election_id); 
関連する問題