2017-01-02 84 views
0

我有一个执行POST请求的函数,当它完成时,我希望视图被更改。要做到这一点,我有以下代码:Android更改视图失败

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main3); 

    final Button button_modificar = (Button)findViewById(R.id.button_modificar); 
    button_modificar.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      try { 
       new SendPostRequest().execute(); 

       Intent intent2 = new Intent(Main3Activity.this, Main_esp_Activity.class); 
       startActivity(intent2); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 

我不知道为什么会崩溃,当我删除线: Intent intent2 = new Intent(Main3Activity.this, Main_esp_Activity.class); startActivity(intent2);,它完美的作品。如果你能帮助我,我将不胜感激。

+1

你可以发布堆栈跟踪吗 –

+0

这段代码不会像你期望的那样工作,你需要触发一个异步操作并在回调中执行你的视图更改,你在这里编写代码会马上尝试启动一个新的活动调用SendPostRequest.execute()。 – Orbit

回答

0

非常感谢大家的回答和时间。我刚刚提出了一个问题的解决方案:活动“Main_esp_Activity”具有以下几行代码: Intent intentGetUser = getIntent(); Bundle extras = intentGetUser.getExtras(); user = extras.getString("user");

哪里用于获取上一个活动的“用户”字符串值。因此,我所要做的只是传递一个值返回字符串“用户”到“Main_esp_Activity,所以在下面的最终代码的变化:

Intent intentt = new Intent(Main3Activity.this, Main_esp_Activity.class); 
intentt.putExtra("user", user); 
startActivity(intentt); 
1

您想打开您的意图的活动在Manifest文件中声明?如果它不是那么宣布它像主要活动

可能是这个帮助你。

0

调用这段代码onPostExecute()

Intent intent2 = new Intent(Main3Activity.this, Main_esp_Activity.class); 
startActivity(intent2);