Я пытаюсь создать тост изнутри моего фрагмента. Я искал часы в Интернете, и все, с чем я сталкиваюсь, похоже, не работает.Android: Тост в приложении с вкладками и следующая страница onclick в приложении с вкладками
information.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast toast = Toast.makeText(getActivity().getBaseContext(), "This information will not be published in the world wide web, but will be saved on your own device instead", Toast.LENGTH_SHORT);
toast.show();
toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
}
});
'getActivity' красный. При наведении указатель говорит: «не может решить метод getActivity() '". Если удалить getActivity, и использовать только getBaseContext() или getApplicationContext(), это говорит о том, что нестатическая метод не может ссылаться из статического контекста. Может ли кто-нибудь научить меня, как создать этот конкретный тост?
Я использовал стандартное приложение для вкладок в галерее от Android Studio. Вот мой код (вы найдете его в самом низу):
public class ApplicationFragments extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
//get widgets voor alle functies
private static View rootView;
//variable
private static int section;
//fragment1
static ImageButton information;
static int addOneSex;
static int addOneWeight;
static int addOneAge;
static ImageView plusSex;
static ImageView plusWeight;
static ImageView plusAge;
static TextView sex;
static TextView weight;
static TextView age;
//fragment2
static int addOneHour;
static int addOneBeer;
static int addOneWine;
static int addOneShot;
static ImageView plusBeers;
static ImageView plusWines;
static ImageView plusShots;
static TextView plusHours;
static TextView amountOfHours;
static TextView amountOfBeers;
static TextView amountOfWines;
static TextView amountOfShots;
//fragment3
//all fragments
static Button btnNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
//verander animatie
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.fade_out);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_information);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
}
public static class PlaceholderFragment extends Fragment {
private static final String ARG_SECTION_NUMBER = "section_number";
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
//bij het creëren van een tab
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_information, container, false);
//set xml
section = getArguments().getInt(ARG_SECTION_NUMBER);
if (section == 1) {
rootView = inflater.inflate(R.layout.fragment_information, container, false);
GenerateFragment1();
}
if (section == 2) {
rootView = inflater.inflate(R.layout.fragment_drinks, container, false);
GenerateFragment2();
}
if (section == 3) {
rootView = inflater.inflate(R.layout.fragment_calculate, container, false);
GenerateFragment3();
}
return rootView;
}
}
//geef de juiste pagina terug
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
//hoeveelheid pagina's
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "SECTION 1";
case 1:
return "SECTION 2";
case 2:
return "SECTION 3";
}
return null;
}
}
//fragment 1
public static void GenerateFragment1(){
information = (ImageButton) rootView.findViewById(R.id.imgBtnInfo);
sex = (TextView) rootView.findViewById(R.id.etSex);
weight = (TextView) rootView.findViewById(R.id.etWeight);
age = (TextView) rootView.findViewById(R.id.etAge);
plusSex = (ImageView) rootView.findViewById(R.id.btnSex);
plusWeight = (ImageView) rootView.findViewById(R.id.btnWeight);
plusAge = (ImageView) rootView.findViewById(R.id.btnAge);
btnNext = (Button) rootView.findViewById(R.id.btnNext);
plusSex.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addOneSex = Integer.parseInt(sex.getText().toString());
addOneSex++;
sex.setText(Integer.toString(addOneSex));
}
});
plusWeight.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addOneWeight = Integer.parseInt(weight.getText().toString());
addOneWeight++;
weight.setText(Integer.toString(addOneWeight));
}
});
plusAge.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
addOneAge = Integer.parseInt(age.getText().toString());
addOneAge++;
age.setText(Integer.toString(addOneAge));
}
});
information.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast toast = Toast.makeText(getActivity().getBaseContext(), "This information will not be published in the world wide web, but will be saved on your own device instead", Toast.LENGTH_SHORT);
toast.show();
toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
}
});
btnNext.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//to the next fragment
}
});
}
Кроме того, мне интересно, как я могу сделать приложение перейти на следующую страницу, на ButtonClick (btnNext).
Спасибо за ваше время и помощь!
Могу ли я узнать, в чем заключается намерение сделать все ваши переменные статическими? Я имею в виду, почему даже ваши кнопки и изображение являются статическими? – Moulesh
Потому что, если я не ставим перед собой статическую, он говорит: «Нестатическое поле ... нельзя ссылаться на статический контекст». Я довольно новый, поэтому, если есть лучший способ, стреляйте! –
Ну, делая даже ресурс, пригодный для рисования, вырвал бы из памяти вашего телефона, как ад ... и приведет к ошибкам в памяти и приведет к сбою приложения ... Могу ли я узнать, что именно вы пытаетесь сделать. Что ваш подход? у вас есть одна активность, а отдых - это фрагменты? или у вас есть несколько видов деятельности? – Moulesh