2

fragments的应用程序有不同的布局,它们有不同的布局,所以我想layout ids从不同的活动中访问 ex buttontextview

我有一个fragment 被调用的MyFragment,它有一个布局文件frag.xml和一个MainActivity带有布局的main.xml.infrag.xml我有

<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

我想像这样访问in的 id Button,如果我 像这样访问它,我该如何访问它,它会抛出一个.also 我想为那个按钮执行事件。farg.xmlMainActivityButton button=(Button)findViewById(R.id.myButton);NullPointerExceptiononClick()MainActivity

4

3 回答 3

1

R.id.myButton是您如何引用按钮的 id。但是,该按钮仅在 的视图层次结构中可用frag.xml。因此,如果按钮在您调用的上下文的视图层次结构中不存在,则findViewById(R.id.myButton)应该返回。 nullfindViewById(R.id.myButton)

要从主要活动访问片段中的按钮,您必须编写一个主要活动可以在片段上调用的方法,然后让片段完成访问/修改按钮并将您需要的任何信息返回到主要活动的工作.

于 2013-03-29T04:10:40.650 回答
1

您可以通过以下方式找到按钮的 ID

buttonid = getResources().getIdentifier(myButton , "Button", getPackageName());   

第一个参数是@+id 后面的XML 名称,第二个是类型,第三个是你的包名。

于 2013-03-29T04:32:46.497 回答
0

找到每个片段的主布局并将它们存储在一个类的静态数组中。您可以在每个片段中找到您的视图并将其存储在一个类的静态字段中(可能是另一个类):

class Store{
public static view;
}

在片段中:

Stroe.view = (Button)findViewById(R.id.myButton);

在活动中:

Button btn = Store.view;
于 2013-03-29T03:49:10.793 回答