問題は解決しました、助けてくれてありがとう。
基本的に、ボタンに OnClick リスナーを設定する onCreate() クラスがあります。クリックすると、非同期タスクが作成されて実行されます。
この非同期タスクはサーバーから応答を取得し、その情報を onPostExecute() に送信します。
ここから、情報が有効かどうかに応じて、結果を乾杯し、それに応じてアクティビティを切り替えたいと考えています。
今のところ、 onPostExecute() から実行しようとしましたが、機能しません。どういうわけか、メインスレッドに戻ってそこでやらなければなりません。どうすればいいですか?コードは次のとおりです。
public class Class1 extends Activity {
JSONObject jObj = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
Button submit = (Button) findViewById(R.id.submitButton);
submit.setOnClickListener(new View.OnClickListener(){
public void onClick(View arg0){
(new CallAPI(restfulCall)).execute();
}
});
}
public class CallAPI extends AsyncTask<Void,Void,String>
{
private String restfulCall = "";
public CallAPI(String command)
{
restfulCall = command;
}
protected String doInBackground(Void... urls)
{
return API.getData(restfulCall);
}
protected void onPostExecute(String result) {
try {
jObj = new JSONObject(result);
} catch (JSONException e1) {
e1.printStackTrace();
}
try {
if(jObj.get("status").toString().equals("success"))
{
Toast.makeText(getBaseContext(),"Registration Succesful",Toast.LENGTH_LONG).show();
Intent intent = new Intent(Class1.this,Success.class);
Class1.this.startActivity(intent);
}
else
{
Toast.makeText(getBaseContext(),jObj.get("error").toString(),Toast.LENGTH_LONG).show();
Intent intent = new Intent(Class1.this,Error.class);
Class1.this.startActivity(intent);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}