专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Android

setContentView()后对Button设置的监听无效了,该怎么处理

发布时间:2010-05-30 10:51:22 文章来源:www.iduyao.cn 采编人员:星星草
setContentView()后对Button设置的监听无效了
setContentView()后,必须再次对相应的Button设置监听吗?




代码如下,


Java code

package lab.sodino.layoutdemo;

import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class LayoutDemoAct extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Set up click listeners for all the buttons
        View linearView = findViewById(R.id.linearBtn);
        linearView.setOnClickListener(this);
        View tableView = findViewById(R.id.tableBtn);
        tableView.setOnClickListener(this);
        View frameView = findViewById(R.id.frameBtn);
        frameView.setOnClickListener(this);
        View absoluteView = findViewById(R.id.absoluteBtn);
        absoluteView.setOnClickListener(this);
        View relativeView = findViewById(R.id.relativeBtn);
        relativeView.setOnClickListener(this);
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        Log.d("Sodino", "Inflate menu item");
        return true;
    }

    public void onClick(View v) {
        //点击按钮进入不同的布局界面
        if (v.getId() == R.id.linearBtn) {
            //进入linearLayout界面
            setContentView(R.layout.linearlayoutdemo);
        } else if (v.getId() == R.id.tableBtn) {
            setContentView(R.layout.tablelayoutdemo);
        } else if (v.getId() == R.id.frameBtn) {
            setContentView(R.layout.framelayoutdemo);
        } else if (v.getId() == R.id.absoluteBtn) {
            setContentView(R.layout.absolutelayoutdemo);
        } else if (v.getId() == R.id.relativeBtn) {
            setContentView(R.layout.relativelayoutdemo);
        }
    }

    public boolean onOptionsItemSelected(MenuItem item) {
//        super.onOptionsItemSelected(item);
        if (item.getItemId() == R.id.backMenu) {
            setContentView(R.layout.main);
            //返回 主界面 后,如果没有再次设置监听
            //则再次返回主界面时点击相应的按钮无效
            View linearView = findViewById(R.id.linearBtn);
            linearView.setOnClickListener(this);
            View tableView = findViewById(R.id.tableBtn);
            tableView.setOnClickListener(this);
            View frameView = findViewById(R.id.frameBtn);
            frameView.setOnClickListener(this);
            View absoluteView = findViewById(R.id.absoluteBtn);
            absoluteView.setOnClickListener(this);
            View relativeView = findViewById(R.id.relativeBtn);
            relativeView.setOnClickListener(this);
            return true;
        }
        return false;
    }
}



------解决方案--------------------
每次你都贴了不一样的View 应该需要再关联一下里面控件的ID的
------解决方案--------------------
findViewById与setContentView所设定的view是关联在一起的,调用setContentView之后,必须重新findViewById
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: