2014-07-15 19 views
0

Я пытаюсь создать простое меню Android Options внутри фрагмента с тремя различными параметрами. Я получаю сообщение об ошибке onCreate, в котором говорится: «savedInstanceState не может быть разрешен переменной». ошибка в setContentView, которая гласит: «Метод setContentView (int) не определен для типа« Настройки ». Ошибка, указывающая: «Метод makeText (Context, CharSequence, int) в типе Toast не применим для аргументов (Settings, String, int). Я видел пару обучающих программ, которые использовали меню так же, как я использую. ..can кто-то помочьОшибки простого меню Android

Вот класс Fragment:

package com.mapping.application; 

import android.app.Fragment; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.view.MenuItem; 
import android.widget.Toast; 



public class Settings extends Fragment{ 

Button button; 
ImageView image; 
private NavigationDrawerFragment mNavigationDrawerFragment; 


public Settings() { 
// mCallback = null; 
} 

public static Settings newInstance() { 
    return new Settings(); 
} 

@Override 
public void onCreate(Bundle savedIstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu, menu); 
    super.onCreateOptionsMenu(menu, inflater); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.item1: 
     Toast.makeText(this, "Option1", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item2: 
     Toast.makeText(this, "Option2", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item3: 
     Toast.makeText(this, "Option3", Toast.LENGTH_SHORT).show(); 
     return true; 


    } 
} 
+0

Где вызывающую активность для этого фрагмента – Ayub

+1

Ну, в свой 'onCreate' метод вы указали переменную saveIstanceState, а не сохраненную. I'n'stanceState –

+0

Вы, очевидно, взяли свой код из учебника, в котором вместо 'Fragment' используется' Activity'. Метод 'setContentView' не применяется к' Fragment' - вам нужно использовать 'onCreateView' вместо этого. Метод 'makeText (Context, CharSequence, int)', очевидно, ожидает, что 'Context' станет первым параметром, а' Fragment' не является 'Context'. В вашем вызове 'makeText' используйте' getActivity() 'вместо' this'. – Squonk

ответ

0

Попробуйте это:

public class Settings extends Fragment{ 

Button button; 
ImageView image; 
private NavigationDrawerFragment mNavigationDrawerFragment; 


public Settings() { 
// mCallback = null; 
} 

public static Settings newInstance() { 
    return new Settings(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    //This method is the one you use to add a view to a fragment 
    //onCreate doesn't need to be overridden for that 
    return inflater.inflate(R.layout.activity_main, container, false); 

} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    //This line is important! It tells the Activity that this fragment wants to 
    //participate on the creation of the menu 
    setHasOptionsMenu(true); 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu, menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.item1: 
     Toast.makeText(this, "Option1", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item2: 
     Toast.makeText(this, "Option2", Toast.LENGTH_SHORT).show(); 
     return true; 
    case R.id.item3: 
     Toast.makeText(this, "Option3", Toast.LENGTH_SHORT).show(); 
     return true; 


    } 
} 
+0

Это почти все работало. Я все еще получаю ошибки в функции makeText. В нем говорится: «Метод makeText (Context, CharSequence, int) в типе Toast не применим для аргументов (Settings, String, int)» – user3293643

+0

Измените его так, чтобы он выглядел следующим образом: 'Toast.makeText (getActivity()," Option2 ", Toast.LENGTH_SHORT) .show();' –

Смежные вопросы