Android 使用arrayadapter在Framint listview上出错时,提示类型new View的getFragmentManager()未定义错误。OnClickListener(){}

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.

我在使用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.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()