Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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 - Fatal编程技术网

Android 机器人的实现

Android 机器人的实现,android,android-fragments,Android,Android Fragments,我是第一次实现片段,所以请帮助我 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.

我是第一次实现片段,所以请帮助我

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

我希望id为'list'的片段应该保持不变,但是id为'viewer'的片段应该能够调用不同的类

(请注意,这些类扩展了活动。)


我的问题很简单:我有四节课(扩展活动)。我想把屏幕分成两部分。左侧保持不变,其中包含listview。在列表视图中单击“我想打开我的类(扩展活动)”,但只在右侧部分(剩余屏幕)。

这是一个基本问题。你应该从一开始。而且还可以帮助您。

片段就像独立的活动,因此除非您进行更改,否则对一个片段的操作不会影响其他片段。 假设您在左侧片段上有一个listview,则在其活动位置有一个ListListener。 对于每个项目,单击右侧片段上的切换活动

OnItemClick事件的示例代码

Fragment fragment=new activity1();
fragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.replace(R.id.frame2,fragment);
ft.commit();

在上面的代码段中,activity1是要附加到正确片段的新类。R.id.frame2是与正确片段一起使用的framelayout的id。

根据android片段文档: 片段表示活动中的行为或用户界面的一部分。您可以在单个活动中组合多个片段,以构建多窗格UI,并在多个活动中重用片段。您可以将片段视为活动的模块化部分,它有自己的生命周期,接收自己的输入事件,可以在活动运行时添加或删除(有点像“子活动”,可以在不同的活动中重用)。

我从您的问题中了解到,您希望在运行时查看fragement
查看器的内容。对此,我可以提出一个可能的解决方案:
扩展
片段
,而不是扩展
活动
,每个类都有自己的布局。将主布局文件修改为如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.news.ArticleListFragment"
        android:id="@+id/list"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent" />
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/viewer"
        android:layout_weight="2"
        android:layout_width="0dp"
        android:layout_height="match_parent" >
</FrameLayout>

</LinearLayout> 

FrameLayout基本上将充当片段的容器,您可以在运行时动态加载(通过单击ListView)。本教程将帮助您解决此问题:


希望我的回答能在某种程度上帮助您。

Fragment类可以通过多种方式获得各种各样的结果。在其核心中,它表示在更大的活动中运行的特定操作或接口。片段与它所处的活动密切相关,不能单独使用。尽管片段定义了它自己的生命周期,但生命周期依赖于它的活动:如果活动停止,那么它内部的任何片段都不能启动;当活动被销毁时,所有片段都将被销毁

    MyFragment newFragment = new MyFragment();// MyFragment is a Fragment class
    FragmentTransaction transaction = getFragmentManager().beginTransaction();

        transaction.add(R.id.fra,newFragment, tag);
        transaction.addToBackStack(null);

        transaction.commit();

示例内代码更改

          ft.add(android.R.id.content,fragTwo, "tag"); 

并在detail.java中添加一些代码

                 public void onStart() {
    // TODO Auto-generated method stub
    tv.setText(data);
    b.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            fm.beginTransaction();
            Fragment fragTwo = new MyFragment();
            //String tag = getActivity().GetFragmentID();
            Fragment f= fm.findFragmentById(getId());
            ft.replace(R.id.fra,fragTwo, "tag");
            ft.hide(f);  
            ft.commit(); 


        }
    });


    super.onStart();
}

正如您在FAQ上看到的,您的问题基本上必须是一个“特定的编程问题”,而不是这种情况。你问的不是任何容易指出的问题,而是一个为我做的问题。我看过很多相关的例子,但是所有人都有“单个活动中的多个片段”,但我正在尝试“单个片段中的多个活动”。任何有关问题解决方案的帮助都值得赞赏。这里的示例是特定于类的,即我们在xml本身中指定了一个类。我想使用不同的类(每个类都是一个活动类),它们是单击左侧片段上的列表项的结果。感谢您在回答我的问题时表示关注。请帮助。您不能一次显示两个活动。您应该实现片段来显示您的内容,并将它们放在一个活动中。片段之间的通信可以通过容器活动来完成。我的问题很简单:我有四个类(扩展活动)。我想把屏幕分成两部分。左侧保持不变,其中包含listview。在列表视图中单击“我想打开我的类(扩展活动)”,但只在右侧部分(剩余屏幕)。请阅读第一个链接中的片段。你无法实现你所描述的。您应该扩展片段而不是活动。@sneaker\u android您使用的一点代码将有助于更好地指导您。但根据您的代码,活动1应该扩展片段,但我的活动1扩展活动:(……框架布局将充当片段的容器,而不是活动的容器。我希望您指定的框架布局充当活动的容器。看,您遗漏了片段的用途。如果您希望避免使用意图和单独的活动,则片段是安卓提供的机制。片段允许您修改重新定义您的活动。您不能在活动中添加其他活动。片段就是为了这个目的而存在的。它们可以嵌入到活动中,并且可以像活动一样发送和接收数据。您不能在与其他活动相同的屏幕上启动活动。启动新活动将自动带您进入下一个屏幕.但是片段提供了您所需要的功能。还要试着理解一个活动可以由多个片段组成,反之亦然。我想使用我之前编写的活动。似乎我必须重新编写扩展片段的类。这就是您想说的吗?????是的,这就是实现你想要的东西的直接方式,这也是这里的其他人一直在试图向你解释的。因为不可能在另一个活动中嵌入一个活动。浏览我发布的链接,使用片段可能有点棘手,但一旦你掌握了窍门,它就不太难了。我也是一个android新手,并且在我的一个应用程序中实现了类似的事情
                 public void onStart() {
    // TODO Auto-generated method stub
    tv.setText(data);
    b.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            fm.beginTransaction();
            Fragment fragTwo = new MyFragment();
            //String tag = getActivity().GetFragmentID();
            Fragment f= fm.findFragmentById(getId());
            ft.replace(R.id.fra,fragTwo, "tag");
            ft.hide(f);  
            ft.commit(); 


        }
    });


    super.onStart();
}