更改Fragment中的特定视图

时间:2014-07-02 15:02:07

标签: android android-fragments layout-inflater

我是Android开发人员的新手,我目前对这种情况感到困惑。

有没有办法更改片段的特定子视图?

例如,我在片段中有一个TextView和Button。现在在对这个片段进行膨胀并提交之后,我只想根据用户输入更改TextView的文本。

编辑:相同的布局用于创建多个片段。我想改变特定片段的TextView。

MainActivity Code:

public class MainActivity extends Activity {

Button bt;
EditText et;
LinearLayout ly;
String m;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bt=(Button) findViewById(R.id.badd);
    ly=(LinearLayout) findViewById(R.id.lay_ver);
    et=(EditText) findViewById(R.id.etadd);
    bt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // multiple fragments are created
            MyFragment f=new MyFragment();
            FragmentManager fm=getFragmentManager();
            FragmentTransaction t=fm.beginTransaction();
            t.add(R.id.sv1, f, "hi");
            t.commit();
            et.setText("");
        }
    });
//would like to change the text of the textview of the fragment
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
} 
}

片段代码:

public class MyFragment extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View v=inflater.inflate(R.layout.frag_lay, null);


    return v;
}
}

activity_main XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/lay_ver"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
    android:id="@+id/lay_hor"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/etadd"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="80"
        android:hint="Enter Subject"
        android:paddingTop="20dp" />

    <Button
        android:id="@+id/badd"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="20"
        android:text="Add" />
</LinearLayout>

<ScrollView
    android:id="@+id/sv"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/sv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>
</ScrollView>

片段XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layfrag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.53"
        android:text="HiHow"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.20"
        android:text="Hello"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

     <Button
         android:id="@+id/button1"
         style="?android:attr/buttonStyleSmall"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Button" />

     <Button
         android:id="@+id/button2"
         style="?android:attr/buttonStyleSmall"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Button" />

 </LinearLayout>

2 个答案:

答案 0 :(得分:0)

基本View类有findById()方法,您可以使用它来获取对子视图的引用,如下所示:

View parent = fragment.getView();
View childTextView = (TextView)parent.findViewById(R.id.myChildTextView);

答案 1 :(得分:0)

您可以在创建活动时将片段列表和每个片段添加到列表中。然后你可以得到你想要改变的片段,并按照cdblades所说的那样做:

View parent = fragment.getView();
View childTextView = (TextView)parent.findViewById(R.id.myChildTextView);

但是为什么要在同一个容器中添加片段?