我需要在我的片段的onCreate()上声明我的Chronometer,因为如果我在onCreateView()上声明,每次调用ChronometerFragment时都会重置Chronometer。
我的实际代码:
ChronometerFragment.class
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>
我的问题是用户无法更改片段,因为这会重置天文台。
拜托,有人可以帮助我吗?
感谢。
答案 0 :(得分:1)
这个问题制定得很糟糕..但是在你的onCreate中,把setretaininstance(true)。这应该工作。 :-)