Android 使用arrayadapter在Framint listview上出错时,提示类型new View的getFragmentManager()未定义错误。OnClickListener(){}
我在使用listfragment时,将arrayadapter扩展到customadapter类,但遇到错误Android 使用arrayadapter在Framint listview上出错时,提示类型new View的getFragmentManager()未定义错误。OnClickListener(){},android,android-fragments,Android,Android Fragments,我在使用listfragment时,将arrayadapter扩展到customadapter类,但遇到错误 The method getFragmentManager() is undefined for the type new View.OnClickListener(){} 这是我的适配器类 包com.arivoli.adapters import java.util.ArrayList; import android.app.Activity; import android.app.
The method getFragmentManager() is undefined for the type new View.OnClickListener(){}
这是我的适配器类
包com.arivoli.adapters
import java.util.ArrayList;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import com.arivoli.amec.Contactrepresentativedetails;
import com.arivoli.amec.R;
public class CustomAdapter extends ArrayAdapter<String> {
private Context context;
ListView list;
private ArrayList<String> listexample;
public CustomAdapter(Context con, int layout, ArrayList<String> listexample) {
super(con, com.arivoli.amec.R.layout.contactrepresentativelist,
listexample);
this.context = con;
this.listexample = listexample;
}
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.contactrow, parent, false);
TextView tv = (TextView) rowView.findViewById(R.id.textView1);
ImageButton i = (ImageButton) rowView.findViewById(R.id.imageView1);
tv.setText(listexample.get(position));
i.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Contactrepresentativedetails fragment = new Contactrepresentativedetails();
FragmentManager fm = ((Activity)context).getFragmentManager();
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.contactcontainer, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
return rowView;
}
适配器类中的我的导入
import java.util.ArrayList;
import com.arivoli.amec.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
你需要有这个
导入android.app.FragmentManager
和导入android.app.FragmentTransaction代码>
使用我忘了提到的Szymon的建议
R.id.contactcontainer
是不在xml适配器类中的容器
import java.util.ArrayList;
import com.arivoli.amec.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
第一个片段由活动托管。在activity_main.xml中,您有一个id为container的containet ie FrameLayout
现在将contractrepresentative片段添加到其中。此片段有一个listview,其中包含一个textview和imagebutton
现在,您将使用一个接口作为对活动的回调,然后在活动中用一个新片段(即您选择的片段)替换contractrepresentative片段
现在在这种情况下,无论您单击哪个imagebutton,都将仅替换为fragment2。相反,您可以使用接口作为回调传递位置,并替换为适当的片段
例如:
public class MainActivity extends Activity implements Return {
Contactrepresentative newFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFragment= new Contactrepresentative();
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.container, newFragment);
transaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void ReturntoActivity(int pos) {
// TODO Auto-generated method stub
Log.i(".............",""+pos);
Bundle bundle = new Bundle();
bundle.putInt("key",pos );
FragmentManager manager=getFragmentManager();
Fragment2 newFragment = new Fragment2();
newFragment.setArguments(bundle);
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.commit();
}
}
activtiy_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout
android:layout_width="match_parent"
android:id="@+id/container"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>
</FrameLayout>
</RelativeLayout>
折断
现在我单击了第1行中的图像按钮。所以我的片段2显示为1。注意:始终导航到碎片2
Snap2
您需要将此导入android.app.FragmentManager
和导入android.app.FragmentTransaction代码>
使用我忘了提到的Szymon的建议
R.id.contactcontainer
是不在xml适配器类中的容器
import java.util.ArrayList;
import com.arivoli.amec.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
第一个片段由活动托管。在activity_main.xml中,您有一个id为container的containet ie FrameLayout
现在将contractrepresentative片段添加到其中。此片段有一个listview,其中包含一个textview和imagebutton
现在,您将使用一个接口作为对活动的回调,然后在活动中用一个新片段(即您选择的片段)替换contractrepresentative片段
现在在这种情况下,无论您单击哪个imagebutton,都将仅替换为fragment2。相反,您可以使用接口作为回调传递位置,并替换为适当的片段
例如:
public class MainActivity extends Activity implements Return {
Contactrepresentative newFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFragment= new Contactrepresentative();
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.container, newFragment);
transaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void ReturntoActivity(int pos) {
// TODO Auto-generated method stub
Log.i(".............",""+pos);
Bundle bundle = new Bundle();
bundle.putInt("key",pos );
FragmentManager manager=getFragmentManager();
Fragment2 newFragment = new Fragment2();
newFragment.setArguments(bundle);
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.commit();
}
}
activtiy_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout
android:layout_width="match_parent"
android:id="@+id/container"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>
</FrameLayout>
</RelativeLayout>
折断
现在我单击了第1行中的图像按钮。所以我的片段2显示为1。注意:始终导航到碎片2
Snap2
您需要将此导入android.app.FragmentManager
和导入android.app.FragmentTransaction代码>
使用我忘了提到的Szymon的建议
R.id.contactcontainer
是不在xml适配器类中的容器
import java.util.ArrayList;
import com.arivoli.amec.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
第一个片段由活动托管。在activity_main.xml中,您有一个id为container的containet ie FrameLayout
现在将contractrepresentative片段添加到其中。此片段有一个listview,其中包含一个textview和imagebutton
现在,您将使用一个接口作为对活动的回调,然后在活动中用一个新片段(即您选择的片段)替换contractrepresentative片段
现在在这种情况下,无论您单击哪个imagebutton,都将仅替换为fragment2。相反,您可以使用接口作为回调传递位置,并替换为适当的片段
例如:
public class MainActivity extends Activity implements Return {
Contactrepresentative newFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFragment= new Contactrepresentative();
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.container, newFragment);
transaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void ReturntoActivity(int pos) {
// TODO Auto-generated method stub
Log.i(".............",""+pos);
Bundle bundle = new Bundle();
bundle.putInt("key",pos );
FragmentManager manager=getFragmentManager();
Fragment2 newFragment = new Fragment2();
newFragment.setArguments(bundle);
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.commit();
}
}
activtiy_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout
android:layout_width="match_parent"
android:id="@+id/container"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>
</FrameLayout>
</RelativeLayout>
折断
现在我单击了第1行中的图像按钮。所以我的片段2显示为1。注意:始终导航到碎片2
Snap2
您需要将此导入android.app.FragmentManager
和导入android.app.FragmentTransaction代码>
使用我忘了提到的Szymon的建议
R.id.contactcontainer
是不在xml适配器类中的容器
import java.util.ArrayList;
import com.arivoli.amec.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
第一个片段由活动托管。在activity_main.xml中,您有一个id为container的containet ie FrameLayout
现在将contractrepresentative片段添加到其中。此片段有一个listview,其中包含一个textview和imagebutton
现在,您将使用一个接口作为对活动的回调,然后在活动中用一个新片段(即您选择的片段)替换contractrepresentative片段
现在在这种情况下,无论您单击哪个imagebutton,都将仅替换为fragment2。相反,您可以使用接口作为回调传递位置,并替换为适当的片段
例如:
public class MainActivity extends Activity implements Return {
Contactrepresentative newFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newFragment= new Contactrepresentative();
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
transaction.add(R.id.container, newFragment);
transaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void ReturntoActivity(int pos) {
// TODO Auto-generated method stub
Log.i(".............",""+pos);
Bundle bundle = new Bundle();
bundle.putInt("key",pos );
FragmentManager manager=getFragmentManager();
Fragment2 newFragment = new Fragment2();
newFragment.setArguments(bundle);
FragmentTransaction transaction=manager.beginTransaction();
transaction.replace(R.id.container, newFragment);
transaction.commit();
}
}
activtiy_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<FrameLayout
android:layout_width="match_parent"
android:id="@+id/container"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
>
</FrameLayout>
</RelativeLayout>
折断
现在我单击了第1行中的图像按钮。所以我的片段2显示为1。注意:始终导航到碎片2
Snap2
更换
FragmentManager fm = getFragmentManager();
与
getFragmentManager()
是活动
类的一种方法,您使用它就像它是视图的一部分。OnClickListener
一样
注意:如果您将活动作为上下文传递给适配器,这将起作用。如果没有,请将((活动)上下文)
替换为对您的活动的引用。替换
FragmentManager fm = getFragmentManager();
与
getFragmentManager()
是活动
类的一种方法,您使用它就像它是视图的一部分。OnClickListener
一样
注意:如果您将活动作为上下文传递给适配器,这将起作用。如果没有,请将((活动)上下文)
替换为对您的活动的引用。替换
FragmentManager fm = getFragmentManager();
与
getFragmentManager()
是活动
类的一种方法,您使用它就像它是视图的一部分。OnClickListener
一样
注意:如果您将活动作为上下文传递给适配器,这将起作用。如果没有,请将((活动)上下文)
替换为对您的活动的引用。替换
FragmentManager fm = getFragmentManager();
与
getFragmentManager()