Android-无法解析getSupportFragmentManager的符号
下面是ItemAdapter的代码,我用它作为列表的适配器Android-无法解析getSupportFragmentManager的符号,android,list,fragment,Android,List,Fragment,下面是ItemAdapter的代码,我用它作为列表的适配器 list.setAdapter(new ItemAdapter(thisContext,imageUrl)); 我试图为按钮实现一个onclick监听器,该监听器将向ListFragment添加一个项。当我编译时,它说“无法解析符号getSupportFragmentManager”。见下文粗体部分。但我很确定我导入了android.support.v4.app.FragmentActivity(见下文)。 我在我的主要活动中使用了同
list.setAdapter(new ItemAdapter(thisContext,imageUrl));
我试图为按钮实现一个onclick监听器,该监听器将向ListFragment添加一个项。当我编译时,它说“无法解析符号getSupportFragmentManager”。见下文粗体部分。但我很确定我导入了android.support.v4.app.FragmentActivity(见下文)。
我在我的主要活动中使用了同一个getSupportFragmentManager,它可以正常工作。我不明白它为什么不在这里。如果不是,我应该如何获得HeadlinesFragment以便添加到该片段中的列表中
谢谢你给我的任何帮助
码头
package com.suite.android.menu;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
**import android.support.v4.app.FragmentActivity;**
public class ItemAdapter extends BaseAdapter {
private Context itemPageContext;
private String imagesUrl[];
private static final String TAG = "ItemAdapter" ;
public ItemAdapter(Context c, String[] imageUrl)
{
super();
itemPageContext = c;
imagesUrl = imageUrl.clone(); // copy over
}
private LayoutInflater getLayoutInflater()
{
return (LayoutInflater) itemPageContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View getView(final int position, View convertView, ViewGroup parent)
{
// all this is for 1 item in the list
View theView = convertView;
final ViewHolder holder;
if (convertView == null) {
theView = getLayoutInflater().inflate(R.layout.item_list_image, null);
holder = new ViewHolder();
holder.text = (TextView) theView.findViewById(R.id.foodTitle);
holder.image = (ImageView) theView.findViewById(R.id.foodImage);
holder.button = (Button) theView.findViewById(R.id.addOrderButton);
theView.setTag(holder);
} else
holder = (ViewHolder) theView.getTag();
holder.text.setText("Item " + position);
holder.image.setImageResource(R.drawable.ic_launcher);
holder.button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
**HeadlinesFragment headFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById(R.id.headlines_fragment);**
headFragment.AddItem("One");
Log.d(TAG, "Added Item!");
}
});
return theView;
}
private class ViewHolder {
public TextView text;
public ImageView image;
public Button button;
}
@Override
public int getCount() {
return imagesUrl.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
}
您可能已经导入了该类,但您不在
FragmentActivity
中,您在BaseAdapter
中,因此您所在的类上不存在该方法。如果要在活动上调用该方法,则需要将活动作为片段活动
而不是上下文
)传入,或者将此适配器设置为私有内部类,以便它可以访问所包含的活动方法。需要对FragmentActivity
对象调用该方法。您可能已导入该类,但您不在FragmentActivity
中,您在BaseAdapter
中,因此该方法在您所在的类上不存在。如果要在活动上调用该方法,则需要将活动作为片段活动
而不是上下文
)传入,或者将此适配器设置为私有内部类,以便它可以访问所包含的活动方法。该方法需要在FragmentActivity
对象上调用。我已经有一段时间没有处理片段了。但我相信您只能从FragmentActivity类访问getSupportedFragmentManager
试试这个
public ItemAdapter(Context c,FragmentActivity activity, String[] imageUrl)
{
super();
itemPageContext = c;
this.activity = activity;
imagesUrl = imageUrl.clone(); // copy over
}
然后在类扩展FragmentActivity中执行以下操作:
list.setAdapter(new ItemAdapter(thisContext,thisActivity, imageUrl));
然后在适配器中执行此操作
activity.getSupportedFragmentManager...
希望这有帮助我已经有一段时间没有玩碎片了。但我相信您只能从FragmentActivity类访问getSupportedFragmentManager 试试这个
public ItemAdapter(Context c,FragmentActivity activity, String[] imageUrl)
{
super();
itemPageContext = c;
this.activity = activity;
imagesUrl = imageUrl.clone(); // copy over
}
然后在类扩展FragmentActivity中执行以下操作:
list.setAdapter(new ItemAdapter(thisContext,thisActivity, imageUrl));
然后在适配器中执行此操作
activity.getSupportedFragmentManager...
希望这有帮助当然你现在已经找到了答案,但这可能会帮助其他人。我所处的情况可能与您的情况类似,对于如何将
适配器
类与碎片活动
类分开,同时需要访问适配器中的getSupportFragmentManager
(),我没有确切的答案
传递上下文不起作用,因为它不允许对FragmentActivity进行强制转换(原因我仍然不明白)
但我放弃了,只是保存了对经理本身的访问权限,并直接给它打电话:
public ViewPagerAdapter(Context context, FragmentManager fm, Fragment f) {
super(fm);
_fm = fm; // declared in the class "private FragmentManager _fm;"
_context=context;
}
当然你现在已经找到了答案,但这可能会帮助其他人。我所处的情况可能与您的情况类似,对于如何将
适配器
类与碎片活动
类分开,同时需要访问适配器中的getSupportFragmentManager
(),我没有确切的答案
传递上下文不起作用,因为它不允许对FragmentActivity进行强制转换(原因我仍然不明白)
但我放弃了,只是保存了对经理本身的访问权限,并直接给它打电话:
public ViewPagerAdapter(Context context, FragmentManager fm, Fragment f) {
super(fm);
_fm = fm; // declared in the class "private FragmentManager _fm;"
_context=context;
}
谢谢,我试着将片段传递到适配器中。这对我来说也很有用。谢谢,我试着将片段传递到适配器中。这对我来说也很有用。谢谢你的解释,谢谢。谢谢你的解释,谢谢。