代码之家  ›  专栏  ›  技术社区  ›  CeejeeB

在TimerTask内切换视图-Android

  •  0
  • CeejeeB  · 技术社区  · 14 年前

    我有以下代码,它响应按钮单击,更改视图,然后在5秒钟后切换回视图:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        Button test = (Button)findViewById(R.id.browseLocation);
        test.setOnClickListener(testListener);
    }
    private TimerTask revert = new TimerTask(){
        @Override
        public void run() {
            setContentView(R.layout.menu);
        }
    };
    private OnClickListener testListener = new OnClickListener() {
        public void onClick(View v) {
            setContentView(R.layout.test);
            Timer tim = new Timer();
            tim.schedule(revert, 5000);
        }
    };
    

    但是,此代码不起作用。timetask的run方法已命中,但setContentView失败。我假设它与timetask中的scope有关。 怎样才能达到预期的效果?

    2 回复  |  直到 14 年前
        1
  •  0
  •   fredley    14 年前

    yourActivityName.this.setContentView()

        2
  •  0
  •   CeejeeB    14 年前

    在另一篇文章中发现无法从非UI线程调用setContentView。