我想问一下,如果有任何的方法来获取从另一个视图中查看。

我的情况是: 我有一个自定义的ImageView呼叫MyImageView。 和我的布局是:

FrameLayout:
  MyImageView 
  LiearLayout:
      LiearLayout: 
          TextView 
      LiearLayout:
          TextView

我在MyImageView一些代码,我想编辑的LinearLayout下的TextView的文本。

我在MyImageView代码选择TextView的是:

TextView textView = (TextView) findViewById(id.TextView01);

然而的TextView总是空,我不能设置文本我优先。

更多,如果我代码这样的:

TextView textView = (TextView) findViewById(R.id.TextView01);

Eclipse将给我一个错误和所述罐;吨决心的ID

那么,有没有从ImageView的到编辑TextView的任何方法?

有帮助吗?

解决方案

首先...这是一个可怕的想法(我会被吓坏了,如果我是你)。而且它的大信号,你必须重新考虑如何做你的布局。

总之,使用 getParent 方法可以工作:

// in your MyImageView
FrameLayout parent = (FrameLayout)getParent();
TextView textView = (TextView) parent.findViewById(R.id.TextView01);

它不工作,你正在做的方式,因为TextViews不是您的自定义视图中。

其他提示

我觉得你可以随时拨打getRootView(),并从那里你可以搜索ID的视图。只要ID是当前视图层次结构中是唯一的,你应该能够抢到的TextView不管它是在层次中。

所以类似于其它应答

TextView textView = (TextView) getRootView().findViewById(R.id.textview_01);

,如果它是在同一屏幕上,它会在那里总是

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top