非静态方法"getActivity";不能从静态上下文中引用

编程入门 行业动态 更新时间:2024-10-10 02:19:39
本文介绍了非静态方法"getActivity";不能从静态上下文中引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我将方法设为静态,但是我遇到了这个问题:android.support.v4.app.FragmentTransaction transaction2 = getActivity() .getSupportFragmentManager().beginTransaction(); ....

i make a method static but i have this problem: android.support.v4.app.FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();....

getActivity()在IDE中用红色下划线表示为什么?

getActivity() is underline in red by IDE why?

我告诉你我的代码

感谢大家!

片段:

public class MyListFragment extends Fragment implements android.widget.CompoundButton.OnCheckedChangeListener { ListView lv; ArrayList<Planet> planetList; static PlanetAdapter plAdapter; BirraAdapter biAdapter; PlanetAdapter.PlanetHolder holder; private static Context context = null; private static Main mInstance; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_list2, container, false); context = getActivity(); mInstance= getActivity(); Button mButton = (Button) rootView.findViewById(R.id.button); mButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showResult(v); } }); //return inflater.inflate(R.layout.fragment_list2, container, false); return rootView; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); lv = (ListView)getView().findViewById(R.id.listview); displayPlanetList(); } private void displayPlanetList() { planetList = new ArrayList<Planet>(); planetList.add(new Planet("Margherita", 6, "€",1)); planetList.add(new Planet("Diavola", 7,"€",2)); planetList.add(new Planet("Bufalina", 5,"€",3)); planetList.add(new Planet("Marinara", 5, "€",4)); planetList.add(new Planet("Viennese", 4, "€", 5)); plAdapter = new PlanetAdapter(planetList, getContext()) { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { int pos = lv.getPositionForView(buttonView); if (pos != ListView.INVALID_POSITION) { Planet p = planetList.get(pos); p.setSelected(isChecked); /*Toast.makeText( getActivity(), "Clicked on Pizza: " + p.getName() + ". State: is " + isChecked, Toast.LENGTH_SHORT).show();*/ } } }; lv.setAdapter(plAdapter); } public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { /*int pos = lv.getPositionForView(buttonView); if (pos != ListView.INVALID_POSITION) { Planet p = planetList.get(pos); p.setSelected(isChecked); *//*Toast.makeText( getActivity(), "Clicked on Planet: " + p.getName() + ". State: is " + isChecked, Toast.LENGTH_SHORT).show();*//* }*/ } public static void showResult(View v) { String result = "Selected Product are :"; int totalAmount=0; String result2 = ""; int totalAmount2=0; String a=""; String z=""; /*for (Birra b : biAdapter.getBox()){ if (b.selected){ result += "\n" + b.name+" "+b.distance+"€"+"q.tà :"+b.getQuantità(); int quantitaInt= Integer.parseInt(b.getQuantità()); totalAmount+=b.distance * quantitaInt; //a=String.valueOf(totalAmount); } }*/ for (Planet p : plAdapter.getBox()) { if (p.isSelected()){ result2 += "\n" + p.getName()+" "+p.getDistance()+"€"+"q.tà :"+p.getQuantità(); int quantitaInt= Integer.parseInt(p.getQuantità() ); totalAmount2+=p.getDistance() * quantitaInt; //z=String.valueOf(totalAmount2); } int totale=totalAmount+totalAmount2; z=String.valueOf(totale); } Toast.makeText(context, result2 + "\n" + "Total Amount:=" + totalAmount2 + "€", Toast.LENGTH_LONG).show(); //Toast.makeText(getActivity(), result2 + "\n" + "Total Amount:=" + totalAmount2 + "€", Toast.LENGTH_LONG).show(); Bundle bun2 = new Bundle(); bun2.putString("scelta", result2); ThreeFragment fgsearch2 = new ThreeFragment(); fgsearch2.setArguments(bun2); android.support.v4.app.FragmentTransaction transaction2 = mInstance.getSupportFragmentManager().beginTransaction(); transaction2.replace(R.id.content_main, fgsearch2); transaction2mit(); /*Bundle bun = new Bundle(); bun.putString("totale", a); TwoFragment fgsearch = new TwoFragment(); fgsearch.setArguments(bun); android.support.v4.app.FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.content_main2, fgsearch); transactionmit();*//* */ /* Bundle bun = new Bundle(); bun.putString("scelta", result2); TwoFragment fgsearch = new TwoFragment(); fgsearch.setArguments(bun); android.support.v4.app.FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.content_main2, fgsearch); transactionmit(); */ } }

活动:

public class Main extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); getSupportFragmentManager().beginTransaction(). replace(R.id.fragmentContainer, new MyListFragment())mit(); } }

推荐答案

您可以按照@sasikumar的建议更改方法,或者如果您不想修改方法,也可以执行以下操作:

You can change your method as @sasikumar suggests or you can do this if you dont want to modify your method:

为您的活动创建一个静态实例:例如,如果您的活动名称为MainActivity,则该实例将为 private static MainActivity mInstance 然后在片段的onCreateView()中,添加初始化它:

Create a static instance of your Activity: e.g if your activity's name is MainActivity, the instance would be private static MainActivity mInstance then inside your fragment's onCreateView(), add initialize it:

mInstance=getActivity()

然后更改

android.support.v4.app.FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();

android.support.v4.app.FragmentTransaction transaction2 = mInstance.getSupportFragmentManager().beginTransaction();

更多推荐

非静态方法"getActivity";不能从静态上下文中引用

本文发布于:2023-11-16 03:49:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1600724.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:静态   文中   方法   quot   getActivity

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!