java - 组件重复 onResume

标签 java android onresume

我一直在搜索这个,但不知道会发生什么......

当我回到上一个 Activity 时,我的组件已正确初始化,但它们上面有一个新组件...

我的意思是,在 Debug模式下,我遵循并执行了 onResume 代码,编写了文本并设置了 onCLicklisteners,但是在好的组件之上显示了一个空组件,我不知道为什么

当然,当应用程序首次创建时它运行良好!

有什么想法吗?

相关代码:组件

public class TopLayout extends RelativeLayout {

  public static final int BTN_LEFT = 0;
  public static final int BTN_RIGHT = 1;
  public static final int LBL_TITLE = 2;
  protected Button btnLeft;
  protected Button btnRight;
  protected TextView lblTitle;

  public TopLayout(Context _context, AttributeSet _attrs) {
    super(_context, _attrs);
  }

  public TopLayout(Context _context) {
    super(_context);
  }

  public TopLayout(Context _context, AttributeSet _attrs, int _defStyle) {
    super(_context, _attrs, _defStyle);
  }

  public void initialize(){
    String infService = Context.LAYOUT_INFLATER_SERVICE;
    LayoutInflater li = (LayoutInflater) getContext().getSystemService(infService);
    li.inflate(R.layout.top_layout, this, true);

    btnLeft = (Button)findViewById(R.id.btnLeft);
    btnRight = (Button)findViewById(R.id.btnRight);
    lblTitle = (TextView)findViewById(R.id.lblTitle);
  }

  public void setText(int _element, String _text){
    switch (_element) {
    case BTN_LEFT:
        btnLeft.setText(_text);
        break;
    case BTN_RIGHT:
        btnRight.setText(_text);
        break;
    case LBL_TITLE:
        lblTitle.setText(_text);
        break;
    default:
        throw new RuntimeException("Unknown element to set Text: " + _text);
    }
  }

  public void hideButton(int _element){
    switch (_element) {
    case BTN_LEFT:
        btnLeft.setVisibility(Button.GONE);
        break;
    case BTN_RIGHT:
        btnRight.setVisibility(Button.GONE);
        break;
    default:
        throw new RuntimeException("Unknown button to hide: " + _element);
    }
  }

  public void setClickAction(int _element, OnClickListener _listener){
    switch (_element) {
    case BTN_LEFT:
        btnLeft.setOnClickListener(_listener);
        break;
    case BTN_RIGHT:
        btnRight.setOnClickListener(_listener);
        break;
    case LBL_TITLE:
        lblTitle.setOnClickListener(_listener);
        break;
    default:
        throw new RuntimeException("Unknown button to activate: " + _element);
    }
  }
}

我的 Activity 的onResume:

topLyt = (TopLayout) findViewById(R.id.lytTop);
topLyt.initialize();
topLyt.setText(TopLayout.BTN_LEFT, res.getString(R.string.edit));
topLyt.setText(TopLayout.LBL_TITLE, res.getString(R.string.involved_people));
topLyt.setText(TopLayout.BTN_RIGHT, res.getString(R.string.add));

但问题是,第一次成功,第二次我在第一个上面得到另一个未初始化的对象(它必须是另一个,因为调试时对象编号相同,我们可以看到前一个如果我把透明背景放到按钮上)

由于声誉原因无法发布图片,但请看这里:

https://dl.dropbox.com/u/1668197/header.png

最佳答案

仅在 View 构造函数中调用自定义 View 的 inititialize() 方法,无需在 Activity 的 onResume() 方法上调用它。

这是一个good read关于 Android 平台上的自定义 View 。

关于java - 组件重复 onResume,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579375/

相关文章:

java - Netbeans Nodes API - 从资源管理器中删除节点

android - 提供的身份验证凭据格式错误或已过期

java - 简单的计时器示例,但它不会正常工作

android - 调用不同的 Activity onResume 调用

Android - Facebook 登录仅在第一次导致 onResume 错误

java - javacv 中的 LineSegmentDetector (openCV 3)

带返回值的对象内的java线程方法

java - 安装自己的eclipse插件后没有反应

android - Kotlin - 互联网和位置权限问题

android - 恢复 Activity 后,recyclerview 的项目变得不可见