使用片段

时间:2016-03-20 18:49:27

标签: android android-fragments button textview

我必须使用两个按钮(一个增量,一个减量)递增/递减Textview中的文本。我正在片段中做所有事情,我注意到它们的工作有点不同。

这些是按钮和textview

<Button
        android:layout_width="36dp"
        android:layout_height="match_parent"
        android:layout_marginLeft="90dp"
        android:text="-"
        android:id="@+id/minus"
        android:onClick="decrement"
        />
        <TextView
        android:layout_width="36dp"
        android:layout_height="match_parent"
        android:paddingTop="15dp"
        android:textSize="18sp"
        android:id="@+id/text"
        android:textAlignment="center"
        android:texr="stats"/>
         <Button
        android:layout_width="36dp"
        android:layout_height="match_parent"
        android:text="+"
        android:id="@+id/plus"
        android:onClick="increment"
        />

这是Fragment的代码

public class MyFragment extends Fragment {
int stat= 0;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_my_fragment, container, false);
}
public void increment(View view){
    stat= stat+ 1;
    displaytext();
}

public void decrement(View view){
        stat = stat - 1;
        displaytext();
}

public void displaytext(){
    TextView textViewevstat = (TextView) getView().findViewById(R.id.text);
    textViewevstat.setText("" + stat);
}
}

它不会带我语法错误或类似但是,在模拟器中,当我按下一个按钮时应用程序崩溃。 我必须在其他时间重新制作所有这段经文,但在这种情况下,我认为足以改变ids和方法的名称。

1 个答案:

答案 0 :(得分:1)

这里这样做

View v;         // Declare this 

public class MyFragment extends Fragment {
int stat= 0;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

     v=inflater.inflate(R.layout.fragment_my_fragment, container, false);
     return v;
}
public void increment(View view){
    stat= stat+ 1;
    displaytext();
}

public void decrement(View view){
        stat = stat - 1;
        displaytext();
}

public void displaytext(){
    TextView textViewevstat = (TextView)v.findViewById(R.id.text);// use it here
    textViewevstat.setText("" + stat);
}

}