Change UI View

You can't change UI View in non UI-Thread(main-Thread).

You can't change UI View in non UI-Thread(main-Thread).

You can't change UI View in non UI-Thread(main-Thread).

I said that three times because it's very import to change UI view.

You have two ways to change UI View.

  1. Using Handle + Thread.
  2. Using runOnUiThread.

For example For "Handle + Thread".

public class MainActivity extends Activity {
 private EditText UITxt;
 private Button updateUIBtn;
 private UIHandler UIhandler;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        UITxt = (EditText)findViewById(R.id.ui_txt);
        updateUIBtn = (Button)findViewById(R.id.update_ui_btn);
        updateUIBtn.setOnClickListener(new View.OnClickListener() {

 public void onClick(View v) {
 // TODO Auto-generated method stub
 UIhandler = new UIHandler();
 UIThread thread = new UIThread();
 thread.start();
 }
 });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    private class UIHandler extends Handler{
     @Override
     public void handleMessage(Message msg) {
     // TODO Auto-generated method stub
     super.handleMessage(msg);
     Bundle bundle = msg.getData();
     String color = bundle.getString("color");
     UITxt.setText(color);
     }
    }
    private class UIThread extends Thread{
     @Override
     public void run() {
     try {
 Thread.sleep(3000);
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
     Message msg = new Message();
     Bundle bundle = new Bundle();
     bundle.putString("color", "黄色");
     msg.setData(bundle);
     MainActivity.this.UIhandler.sendMessage(msg);

     }
    }
}

For example for "runOnUiThread"

FusionField.currentActivity.runOnUiThread(new Runnable()  
            {  
                public void run()  
                {  
                    Toast.makeText(getApplicationContext(), , "Update My UI",  
                            Toast.LENGTH_LONG).show();  
                }  

            });

results matching ""

    No results matching ""