我可以在片段中使用微调器吗?我想在我的活动片段之一中使用微调器来设置倒数计时器的时间。我见过的所有教程和视频都使用活动而不是片段,我不确定它是否与片段中的微调器相同。
package com.softeng.applockerproject;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.concurrent.TimeUnit;
public class page2 extends Fragment {
private static final String TAG = "page2";
private Button btntest;
private TextView timer;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.page2_fragment,container,false);
btntest = (Button) view.findViewById(R.id.button2);
timer = (TextView) view.findViewById(R.id.Timer);
btntest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
countDownTimer.start();
}
});
return view;
}
//timer part
private CountDownTimer countDownTimer = new CountDownTimer(7200000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
long millis= millisUntilFinished;
String hms= String.format("%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))
//TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))
);
timer.setText(hms);
}
@Override
public void onFinish() {
Toast.makeText(getActivity(), "timer stopped",Toast.LENGTH_SHORT).show();
}
};
}
答案 0 :(得分:2)
以下是如何在片段中设置微调器:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.manual, container, false);
String [] values =
{"Time at Residence","Under 6 months","6-12 months","1-2 years","2-4 years","4-8 years","8-15 years","Over 15 years",};
Spinner spinner = (Spinner) v.findViewById(R.id.spinner1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_spinner_item, values);
adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
spinner.setAdapter(adapter);
return v;
}
将布局文件替换为您正在使用的布局文件,祝您好运:)
答案 1 :(得分:0)
在片段中尝试设置和使用微调器
public class ExamsFragment extends Fragment {
private static final String[] spinner_data= {"Term I", "Term II", "Term III"};
View view;
Spinner mySpinner;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_layout, container, false);
setSpinnerData();
mySpinner.setEnabled(true);
//Setting the UI.
return view;
}
初始化微调器和设置适配器的方法
private void setSpinnerData() {
mySpinner= (Spinner) getActivity().findViewById(R.id.spinner_sp);
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(getActivity(),
R.layout.spinner_item_layout, testTypes);
mySpinner.setAdapter(spinnerAdapter);
}
spinner_item_layout.xml //您的微调器项目布局
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:gravity="start"
android:paddingLeft="@dimen/padding_10"
android:paddingRight="@dimen/padding_10"
android:paddingTop="@dimen/padding_3"
android:paddingBottom="@dimen/padding_3"
android:background="@color/colorPrimary"
android:textSize="16sp"/>
中
fragment_layout.xml
//把它放在你的主要布局
<Spinner
android:id="@+id/spinner_sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textStyle="bold">
</Spinner>
答案 2 :(得分:0)
在添加组件方面, Fragments 和 Activities 的行为方式类似。片段可以被认为是具有自己的生命周期方法的迷你活动,还有一些其他方法,如 onCreateView()和 onDestroyView()。您可以通过以下方式向片段添加微调器:
这是Fragment的Java文件的代码:
公共类MainFragment扩展了Fragment {
// Default Constructor to instantiate a Fragment object
public MainFragment(){
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment,container,false);
Spinner spinner = (Spinner) view.findViewById(R.id.spinner);
// Creating an Array Adapter to populate the spinner with the data in the string resources
ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_choices
,android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(spinnerAdapter);
return view;
}
}
用于片段的布局文件的代码是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"/>
</LinearLayout>
现在将片段附加到活动,代码如下:
公共类MainActivity扩展了AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MainFragment fragment = new MainFragment();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().add(R.id.fragment_container,fragment).commit();
}
}
用于为ArrayAdapter提供数据的字符串资源位于strings.xml文件中。它如下:
<string-array name="spinner_choices">
<item>Deafult Choice</item>
<item>Choice 1</item>
<item>Choice 2</item>
<item>Choice 3</item>
<item>Choice 4</item>
<item>Choice 5</item>
</string-array>
将微调器项目添加到 Fragment 和 Activity 之间的唯一区别在于:
ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(getContext(),R.array.spinner_choices
,android.R.layout.simple_spinner_item);
在活动中,您必须将 getContext()替换为此或 ActivityName.this 。其余代码将是相同的。
注意:您应该编写代码以仅从 onCreateView()方法中的Fragment Layout文件中获取Spinner,因为它是在Parent Activity的 onCreate()之前调用的。 方法,确保在将片段附加到父活动之前创建所有视图。