1

問題は解決しました、助けてくれてありがとう。

基本的に、ボタンに 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();
            }

    }
}

}

4

1 に答える 1

1

equalsas の代わりに文字列を比較するために使用し==ます。

if(jObj.get("status").toString().equals("success")

それ以外の

if(jObj.get("status").toString() == "success")
于 2012-10-30T19:25:02.620 に答える