我创建了Fragment
并将其称为Kabar
,我可以看到Button
和TextView
按预期显示。
这是我的Fragment
:
public class Kabar extends Fragment {
private Button button;
private TextView text;
public Kabar() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_kabar , container, false);
return v;
}
}
这是我的fragment_kabar
布局:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.examplee.my.Kabar">
<!-- TODO: Update blank fragment layout -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="mohsen kabar" />
<Button
android:id="@+id/tt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="113dp"
android:text="Button"
android:layout_below="@+id/mohsenkabar"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="93dp"
android:layout_marginEnd="93dp" />
</RelativeLayout>
我需要使用Button
和TextView
。
我可以在哪里放置此代码?
text=(TextView) text.findViewById(R.id.tt1);
button=(Button) button.findViewById(R.id.tt2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tt1.setText("kkk mmm bbb ddd");
}
});
答案 0 :(得分:2)
有两个选项 onCreateView 和 onViewCreated (首选)方法。
void onViewCreated (View view, Bundle savedInstanceState)
在onCreateView(LayoutInflater,ViewGroup, Bundle)已经返回,但在恢复任何已保存的状态之前 到了视野。这为子类提供了初始化自己的机会 一旦他们知道他们的视图层次结构已经完全创建。该 但是,片段的视图层次结构不会附加到其父级 这一点。
答案 1 :(得分:1)
尝试将此代码添加到kabar
片段
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_kabar , container, false);
TextView text=(TextView) v.findViewById(R.id.tt1);
TextView button=(TextView) v.findViewById(R.id.tt2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("kkk mmm bbb ddd");
}
});
return v;
}
答案 2 :(得分:1)
将您的代码替换为 onCreateView
中的代码text =(TextView) v.findViewById(R.id.tt1);
button=(Button) v.findViewById(R.id.tt2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("kkk mmmm bbbb ddd");
}
});
答案 3 :(得分:1)
在您的代码中进行此更改
text=(TextView) v.findViewById(R.id.tt1);
button=(Button) v.findViewById(R.id.tt2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("kkk 'mmm' 'bbb' 'ddd'");
}
});
答案 4 :(得分:1)
您应该在Kabar OnCreateView
中的Fragment
添加您的代码:
public class Kabar extends Fragment {
private Button button;
private TextView text;
public Kabar() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_kabar , container, false);
TextView text = (TextView) v.findViewById(R.id.tt1);
Button button = (Button) v.findViewById(R.id.tt2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text.setText("kkk mmm bbb ddd");
}
});
return v;
}
}