Java 如何在Android中使用findViewById()?
基本上,问题是,当您想要使用“FindViewById”或“GetSystemService”或其他方法时,我不允许这样做 他只让我在主要活动中使用它们,我想知道如何解决这个问题 我是android Studio的新手,我基本上在学习 维护性 片段“Tap1alarmas”Java 如何在Android中使用findViewById()?,java,android,Java,Android,基本上,问题是,当您想要使用“FindViewById”或“GetSystemService”或其他方法时,我不允许这样做 他只让我在主要活动中使用它们,我想知道如何解决这个问题 我是android Studio的新手,我基本上在学习 维护性 片段“Tap1alarmas” 如果您试图在片段中使用findViewById,首先要确保您使用的是onCreateView(),并在最后返回视图 请参见此处的差异: 以下是一个例子: @Override public View onCreateView(
如果您试图在
片段中使用findViewById
,首先要确保您使用的是onCreateView()
,并在最后返回视图
请参见此处的差异:
以下是一个例子:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_single_image, parent, false);
alarm_timepicker = (TimePicker) rootView.findViewById(R.id.TimePicker);
// your widgets with rootView prefix
return rootView;
}
rootView
是本文的重点。因此,如果您想要声明任何小部件(或etc),在本例中使用rootView
作为前缀,然后通过findViewById
引用您的id,这些都是上下文中的函数。您必须在上下文中或在上下文中调用它们。使用非常简单的语言:您可以在活动中的任何位置使用findViewById(R.id.your_id),但当您在片段中时,您需要有对视图对象(可从onCreateView方法访问)视图的引用。findViewById(R.id.your_id);对于getSystemService()
,您可以调用getActivity().getSystemService()
import android.app.AlarmManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
public class tap1alarmas extends Fragment {
AlarmManager alarm_manager;
TimePicker alarm_timepicker;
TextView update_text;
tap1alarmas context;
private MainActivity.SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.context = this;
//Inicizaliar alarmmanager
alarm_manager = (AlarmManager) getSystemService(ALARM_SERVICE);
//Inicializar timepicker
alarm_timepicker = (TimePicker) findViewById(R.id.TimePicker);
//Text uptate`enter code here`
update_text = (TextView) findViewById(R.id.update_text);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_single_image, parent, false);
alarm_timepicker = (TimePicker) rootView.findViewById(R.id.TimePicker);
// your widgets with rootView prefix
return rootView;
}