在onCreate()
方法中,我们可以使用setContentView(R.layout.something)
将布局与活动相关联。无论如何我可以稍后检索something
活动吗?
我知道我可以使用this.findViewById(android.R.id.content).getRootView()
来获取活动的内容视图,但不确定是否可以从那里获得something
?
答案 0 :(得分:1)
如果您想通常为所有活动解决这个问题:
public Object makeCookie(String p) throws IOException, MalformedCookieException{
Calendar myCal = Calendar.getInstance();
myCal.set(2017, 07, 07);
Date theDate = myCal.getTime();
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("testCookie",p);
// Set effective domain and path attributes
cookie.setDomain("http://localhost:9090/");
cookie.setPath("/");
cookie.setExpiryDate(theDate);
cookieStore.addCookie(cookie);
// Set attributes exactly as sent by the server
cookie.setAttribute(ClientCookie.PATH_ATTR, "/");
cookie.setAttribute(ClientCookie.DOMAIN_ATTR, "http://localhost:9090/");
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultCookieStore(cookieStore)
.build();
return cookie;
}
或者你可以这样做:
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());
}
}
答案 1 :(得分:0)
使用此代码获取布局ID:
public void swapAdjacent() {
temp = head;
while (temp != null && temp.next != null) {
Object tem = temp.val;
temp.val = temp.next.val;
temp.next.val = (Object) tem;
temp = temp.next.next;
}
}
这将获得String:
this.findViewById(android.R.id.content).getRootView().getId()
答案 2 :(得分:0)
由于Activity从View扩展,因此您不需要这样做。在某种程度上,您已经引用了活动中的根视图。这使您可以随时拨打findViewById()
。如果你想找到根元素,请确保你的root(LinearLayout或RelativeLayout)有一个id,你可以这样做:
LinearLayout rootLayout = (LinearLayout) findViewById(R.id.my_root);
答案 3 :(得分:0)
您可以使用
获取Activity
的根视图
this.findViewById(android.R.id.content)
如果您需要使用setContentView()
获取添加到活动中的视图,则可以使用
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
但您也可以使用xml根元素中使用的相同ID。
答案 4 :(得分:-1)
只要setConetentView(R.layout.content)
作为布局目录中的布局文件存在,您就可以在任何活动的任何方法中使用content.xml
。
活动是用户可以做的一件重点事。几乎 所有活动都与用户交互,因此Activity类占用 为您创建一个可以放置UI的窗口 的setContentView(查看)。虽然活动经常呈现给用户 作为全屏窗口,它们也可以以其他方式使用:as 浮动窗口(通过windowIsFloating集的主题)或嵌入 在另一个活动内(使用ActivityGroup)。那里有两个 方法几乎所有Activity的子类都将实现:
onCreate(Bundle)是初始化活动的地方。最 重要的是,在这里你通常会用一个调用setContentView(int) 布局资源定义您的UI,并使用findViewById(int)来 检索该UI中需要与之交互的小部件 编程。 onPause()是你处理用户离开的地方 你的活动。最重要的是,用户所做的任何更改都应该 此时要提交(通常是持有的ContentProvider) 数据)。与Context.startActivity()一起使用,所有活动类 必须在他们的包裹中有相应的声明 的AndroidManifest.xml。
来源:http://developer.android.com/reference/android/app/Activity.html