Android 如何获取与活动关联的布局的名称?
在Android 如何获取与活动关联的布局的名称?,android,android-layout,Android,Android Layout,在onCreate()方法中,我们可以使用setContentView(R.layout.something)将布局与活动相关联。我是否可以在以后为某项活动检索某些内容 我知道我可以使用this.findViewById(android.R.id.content).getRootView()来获取活动的内容视图,但不确定从那里我是否可以获取一些东西?你可以在任何活动中的任何方法中使用setconnetview(R.layout.content),只要content.xml作为布局文件存在于布局目
onCreate()
方法中,我们可以使用setContentView(R.layout.something)
将布局与活动相关联。我是否可以在以后为某项活动检索某些内容
我知道我可以使用
this.findViewById(android.R.id.content).getRootView()
来获取活动的内容视图,但不确定从那里我是否可以获取一些东西?你可以在任何活动中的任何方法中使用setconnetview(R.layout.content)
,只要content.xml
作为布局文件存在于布局目录中
活动是用户可以做的一件专注的事情。几乎
所有活动都与用户交互,因此Activity类
为您创建一个窗口,您可以在其中使用
setContentView(视图)。而活动通常呈现给用户
作为全屏窗口,它们也可以以其他方式使用:如
浮动窗口(通过带有windowIsFloating set的主题)或嵌入式
在另一个活动的内部(使用ActivityGroup)。有两个
方法几乎所有活动子类都将实现:
onCreate(Bundle)是初始化活动的地方。最
重要的是,这里通常使用
布局资源定义您的UI,并使用findViewById(int)来
检索UI中需要与之交互的小部件
以编程方式。onPause()是处理用户离开的地方
你的活动。最重要的是,用户所做的任何更改都应该
此时,提交(通常提交给持有
数据)。要与Context.startActivity()一起使用,所有活动类
必须在其包的
AndroidManifest.xml
来源:使用此代码获取布局id:
this.findViewById(android.R.id.content).getRootView().getId()
要获取字符串,请执行以下操作:
getResources().getResourceName()
因为活动是从视图扩展的,所以不需要这样做。在某种程度上,您已经在引用活动中的根视图。这就是允许您随时调用findviewbyd()。如果要查找根元素,请确保根元素(LinearLayout或RelativeLayout)具有id,并且可以执行以下操作:
LinearLayout rootLayout = (LinearLayout) findViewById(R.id.my_root);
您可以使用以下方法获取活动的根视图
:
this.findViewById(android.R.id.content)
如果需要使用setContentView()
获取添加到活动中的视图,可以使用
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
但是,您也可以使用xml根元素中使用的相同id。当您希望为所有活动解决此问题时:
public class BaseActivity extends AppCompatActivity {
private int layoutId;
@Override
public void setContentView(int layoutResID) {
this.layoutId = layoutResID;
super.setContentView(layoutResID);
}
protected String getLayoutName() {
return getResources().getResourceEntryName(this.layoutId);
}
}
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("TAG", getLayoutName());
}
}
或者,您可以这样做:
public class MainActivity extends AppCompatActivity {
private String layoutName;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.layoutName = getResources().getResourceEntryName(R.layout.activity_main);
Log.d("TAG", layoutName);
}
}
我想这并没有回答我的问题,我想问的是,假设您使用setConetentView(R.layout.content)
,然后给定一个活动
,您有没有办法检索传递给setConetentView
的R.layout.content
?这里的“某物”是指视图的id
属性?如果是这样,则只需调用getId()
,它将返回int
值。要将其作为字符串
,请在这个问题中使用Blackbelt的答案:这并没有回答我的问题。问题是我没有R.layout.activity\u main
,我想稍后检索它,我无法按照您在第一部分中的建议更改源代码。