Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在单击列表项中的按钮后移动到新片段_Android_Android Fragments_Android Listview - Fatal编程技术网

Android 如何在单击列表项中的按钮后移动到新片段

Android 如何在单击列表项中的按钮后移动到新片段,android,android-fragments,android-listview,Android,Android Fragments,Android Listview,我如何确保列表项中的按钮是可单击的,因为我正在尝试使按钮可单击,以便它可以转换为不同的片段 与listview一样,它内部的列表项也是片段的一部分,我希望确保单击列表项内部的特定按钮将转换为新片段 主要活动代码: 它包含的选项卡并非所有这些都已经实现,但这不是现在的问题 public class MainActivity extends FragmentActivity implements HomeFragment.OnFragmentInteractionListener {

我如何确保列表项中的按钮是可单击的,因为我正在尝试使按钮可单击,以便它可以转换为不同的片段

与listview一样,它内部的列表项也是片段的一部分,我希望确保单击列表项内部的特定按钮将转换为新片段

主要活动代码: 它包含的选项卡并非所有这些都已经实现,但这不是现在的问题

public class MainActivity extends FragmentActivity implements HomeFragment.OnFragmentInteractionListener {



    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //set up the tabs which hold different fragments, it will currently crash because of the null
        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this,getSupportFragmentManager(), R.id.realtabcontent);
        mTabHost.addTab(mTabHost.newTabSpec("home").setIndicator("Home"), HomeFragment.class , null);
       // mTabHost.addTab(mTabHost.newTabSpec("search").setIndicator("Search"),null/*fragment here*/,null);
       // mTabHost.addTab(mTabHost.newTabSpec("post").setIndicator("Post"),null/*fragment here*/,null);
       // mTabHost.addTab(mTabHost.newTabSpec("books").setIndicator("Books"),null/*fragment here*/,null);
       // mTabHost.addTab(mTabHost.newTabSpec("me").setIndicator("Me"),null/*fragment here*/,null);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    //For home fragment...parameter might change
    @Override
    public void onFragmentInteraction(String id) {

        Button viewPostings = (Button) findViewById(R.id.view_postings);
        viewPostings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PostDetailFragment fragment = PostDetailFragment.newInstance();
                getSupportFragmentManager().beginTransaction().replace(R.id.realtabcontent, fragment).addToBackStack(null).commit();
            }
        });
    }
}

我正在尝试从onFragmentInteractionListener的实现启动新活动。应用程序加载列表视图及其内容,但其中的单个按钮不可单击

使用某种类型的方法,例如,填充ListView。通过这种方式,您可以使用适配器处理按钮单击。

首先,您需要添加此行以使自定义列表项目中的项目可单击:

android:descendantFocusability="blocksDescendants" 
将此属性添加到封闭布局中

其次,需要在为自定义ListView制作的自定义适配器的getView方法中设置onClickListener。例如,这可能是这样的:

ImageButton deleteBtn = (ImageButton) view.findViewById(R.id.delete_btn);
deleteBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // code here
        }
    });

在列表片段中,使用onItemClick:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    if (null != mListener) {
        // Notify the active callbacks interface (the activity, if the
        // fragment is attached to one) that an item has been selected.
        mListener.onFragmentInteraction(foodList.get(position));
    }
}

您定义列表视图的代码在哪里?您想要列表视图和列表项代码吗?当您说按钮单击时,是指列表项内的按钮单击吗?是的。您可以在适配器中处理每个列表项的填充,这样就可以处理每个列表项的按钮。为什么需要android:DegenantFocusability?那么片段传输会发生在onClick实现中吗?我是新来的,所以我不确定getView内部是什么,这就是我所做的:Button viewPostings=Button convertView.findViewByIdR.id.view\u postings;viewPostings.SetOnClickListener新建视图.OnClickListener{@Override public void onClickView v{PostDetailFragment fragment=PostDetailFragment.newInstance;getSupportFragmentManager.beginTransaction.replaceR.id.realtabcontent,fragment.addToBackStacknull.commit;}};但无法解析getSupportFragmentManager
@Override
    public void onFragmentInteraction(Food food) {
        //going from ListFragment to DetailFragment
        //call detail fragment here
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        Fragment fragment = DetailFragment.newInstance(food);
        ft.replace(R.id.container, fragment);
        ft.addToBackStack( "tag" );
        ft.commit();
    }