0

我的应用程序分为多个片段,每个片段都有自己的布局(.xml 文件)。

当我开始在我的活动方法中可视化第一个片段时onCreate(),我使用setContentView(fragment_first). 例如,如何更改TextView包含在第二个片段 (fragment_second) 中的 a?

4

3 回答 3

0

一般来说, aFragment或任何ActivityorView都应该更新它自己的内部 UI 控件。它更容易,而且它的设计很好。其他类/事件可能会更新Fragment数据的状态,但它会处理该状态的显示方式。

编辑以回答评论的问题:

这是在片段中加载内容视图的方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view = inflater.inflate(R.layout.pump_info, container, false);
    return view;
}
于 2012-11-09T12:36:44.170 回答
0

似乎您为活动中的第一个片段设置了 xml 文件。简而言之,你应该做的是创建一个全新的类并让它扩展android.support.v4.app.Fragment,也让你的活动扩展 FragmentActivity 而不仅仅是 Activity。

然后在你的android.support.v4.app.Fragment类(从现在开始我将调用你的片段)中,你应该重写该onCreateView(LayoutInflater inflate, ViewGroup container, Bundle savedInstanceState){}方法,并且在这个方法中你应该像这样写一行: View view = inflater.inflate(R.layout.the_xml_layout_for_this_fragment, container, false);它膨胀片段的布局并将它放置在你的活动布局中的适当位置.

在此之后您需要return view;,但在您返回此视图之前,您可以view.findViewById(R.id.id_of_a_view_from_the_xml_layout_file);找到一个元素并对其进行操作。

您应该为应用程序中需要的每个片段创建这样一个片段类,并让它膨胀它自己的 xml 布局文件。

有关更详细的说明,您可以查看http://www.youtube.com/watch?v=4BKlST82Dtg或其他视频或书面教程。

编辑:这是一个基本的片段类:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyFrag extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    // inflate the view:
    View view = inflater.inflate(R.layout.myfrag_layout, container, false);

    // manipulate widgets, for example:
    TextView textView = (TextView) view.findViewById(R.id.textView);
    textView.setText("read me!!!");

    // return the view:
    return view;
    }

}

这是育儿活动:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;

public class MyFragmentActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // notice that there is a different layout file for the activity and for
    // the fragment!
    setContentView(R.layout.xml_layout_for_the_activity);

    // to start the fragment and stick it into your activity (not needed if
    // you use ViewPager)
    FragmentManager fragMan = getSupportFragmentManager();
    fragMan.beginTransaction()
        .add(R.id.the_visual_element_that_will_contain_your_fragments_layout, fragMan)
        .commit();
    }

}
于 2013-01-18T19:05:05.863 回答
0

在您的onCreateView()方法中,您应该将稍后需要访问的所有视图分配给片段类中的字段,如下所示,

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    view = inflater.inflate(R.layout.xxx, container, false);

    this.aTextView = (TextView)view.findViewById(R.id.a_text_view);
    this.anImageView = (ImageView)view.findViewById(R.id.an_image_view);
    ...
}

然后,您可以aTextView在片段执行的其他地方使用等。

于 2013-01-18T19:12:57.490 回答