Android简单菜单错误

时间:2014-07-15 20:12:20

标签: android android-fragments android-menu

我正在尝试在片段中创建一个简单的Android选项菜单,其中包含三个不同的选项。我在onCreate上收到一条错误,指出“savedInstanceState无法解析为变量”。 setContentView上的错误说:“方法setContentView(int)未定义类型设置。”在Toast类型中显示“方法makeText(Context,CharSequence,int)的错误不适用于参数(Settings,String,int)。我看过几个教程,它们使用的菜单与我使用的方式相同。 ..有人帮忙吗?

这是片段类:

 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;


    }
}

1 个答案:

答案 0 :(得分: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;


    }
}