如何在片段中替换textView的文本

时间:2015-12-17 03:11:36

标签: android android-fragments textview onclicklistener

我想在单击按钮时更改TextView的文本。我的片段中有两个按钮,两个都有一个onClick方法用于相同的TextView。这里详细介绍了我的片段中发生了什么。

我将默认文本设置为TextView意味着第一个文本。 单击第一个按钮时,第二个文本将出现在TextView上。 再次单击第二个按钮时,第一个文本将出现在TextView上。

这是我的片段代码

@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("Rahul", "On Ganpati 1 fragment On Create ");
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    Log.d("Rahul", "On Ganpati 1 fragment On Create View ");
    // Inflate the layout for this fragment

    final TextView textView = (TextView)getView().findViewById(R.id.g1TextView);
    textView.setText(getString(R.string.Ganpati_1));

    Button marathi = (Button)getView().findViewById(R.id.g1Marathi);
    marathi.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textView.setText(getString(R.string.Ganpati_1));
        }
    });

    Button english = (Button)getView().findViewById(R.id.g1English);
    english.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textView.setText(getString(R.string.GanpatiE));
        }
    });
    return inflater.inflate(R.layout.fragment_ganpati_1, container, false);
}

这是XML文件

<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.example.lenovo.shopping.Shankar">

    <Button
        android:layout_width="168dp"
        android:layout_height="50dp"
        android:text="Left"
        android:id="@+id/g1Marathi"
        android:textAlignment="center"
        android:layout_gravity="left|top" />

    <Button
        android:layout_width="168dp"
        android:layout_height="50dp"
        android:text="Right"
        android:id="@+id/g1English"
        android:textAlignment="center"
        android:layout_gravity="right|top" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:paddingBottom="50dp"
        android:id="@+id/scrollView"
        android:layout_gravity="end|fill_vertical">

        <TextView
            android:id="@+id/g1TextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/TextView" />

    </ScrollView>

</FrameLayout>

1 个答案:

答案 0 :(得分:4)

使用片段时,您需要覆盖 onCreateView 并返回查看,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_ganpati_1, null);
    Log.d("Rahul", "On Ganpati 1 fragment On Create View ");
    // Inflate the layout for this fragment

    final TextView textView = (TextView)view.findViewById(R.id.g1TextView);
    textView.setText(getString(R.string.Ganpati_1));

    Button marathi = (Button)view.findViewById(R.id.g1Marathi);

    marathi.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        textView.setText(getString(R.string.Ganpati_1));
        }
    });

    Button english = (Button)view.findViewById(R.id.g1English);
    english.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        textView.setText(getString(R.string.GanpatiE));
        }
    });
    return view;
}