1

问题已解决,感谢您的帮助。

本质上,我的 onCreate() 类在按钮上设置了 OnClick 侦听器。单击它后,将创建并执行一个异步任务。

此异步任务从服务器获取响应,然后将信息发送到 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

用于equals比较字符串而不是==as :

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

代替

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