Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 片段onCreate()问题_Java_Android_Android Fragments - Fatal编程技术网

Java 片段onCreate()问题

Java 片段onCreate()问题,java,android,android-fragments,Java,Android,Android Fragments,我需要在片段的onCreate()上声明我的计时器,因为如果我在onCreateView()上声明,每次调用计时器片段时,计时器都会重置 我的实际代码: 计时器碎片。等级 public class CronometroFragment extends Fragment { Button btStart, btPause, btReset; boolean click; @Override public View onCreateView(LayoutInflat

我需要在片段的onCreate()上声明我的计时器,因为如果我在onCreateView()上声明,每次调用计时器片段时,计时器都会重置

我的实际代码:

计时器碎片。等级

public class CronometroFragment extends Fragment {
    Button btStart, btPause, btReset;
    boolean click;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_cronometro, container,
                false);

        final Cronometro cronometro = (Cronometro) v.findViewById(R.id.cronometro);

        click = true;

        btStart = (Button) v.findViewById(R.id.btStart);
        btPause = (Button) v.findViewById(R.id.btPause);
        btReset = (Button) v.findViewById(R.id.btReset);

        btStart.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                cronometro.start();
            }
        });

        btPause.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                cronometro.pause();
            }
        });

        btReset.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                cronometro.setBase(SystemClock.elapsedRealtime());
                cronometro.stop();
            }
        });

        return v;
    }
fragment_cronometro.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f0f0f0"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/Title"
        android:layout_width="match_parent"
        android:layout_height="40sp"
        android:gravity="center" >

        <TextView
            android:id="@+id/titleText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/title_cronometro"
            android:textSize="35sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/Timer"
        android:layout_width="match_parent"
        android:layout_height="70sp"
        android:gravity="center"
        android:orientation="horizontal" >

        <com.hello.app.Cronometro
            android:id="@+id/cronometro"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="45sp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/Start"
        android:layout_width="match_parent"
        android:layout_height="50sp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btStart"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/button_start" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/PauseStop"
        android:layout_width="match_parent"
        android:layout_height="50sp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btPause"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/button_pause" />

        <Button
            android:id="@+id/btReset"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/button_reset" />
    </LinearLayout>

</LinearLayout>

我的问题是,用户无法更改碎片,因为这会重置计时器

拜托,有人能帮我吗


谢谢。

这个问题表述得很糟糕。。但是在onCreate中,将setretaininstance(true)放在其中。这应该有效。:-)

您好,我设置了setretaininstance(true),但我无法将cronometro设置为onCreate,因为我需要将其与viewId关联,并且我无法访问按钮单击中的cronometro变量。但是,如果您已将setretaininstance设置为onCreate,这就足够了吗?也许我不明白你的问题,对吧。现在我知道你想要什么了。好的,为了让它工作,您需要保存cronometer的状态,然后当视图重新加载时,重新设置状态。将setretaininstance保留在onCreate中。这取决于cronometro类的外观。但最简单的方法是将当前运行时存储在片段中,然后在视图重置时重新设置它。