【问题标题】:Syntax for linking fragments to other activity将片段链接到其他活动的语法
【发布时间】:2015-04-14 18:59:22
【问题描述】:

片段中的按钮在单击时会转到列表视图活动的语法是什么?

任何回应将不胜感激。谢谢。

【问题讨论】:

  • 片段是否位于 ListActivity 中?请发布您拥有的 ListActivity 和片段的任何代码。
  • pastebin.com/jhf1TntZ 这是我想要按钮的片段的编码。
  • pastebin.com/VjK3FRib 这是点击后应该指向的位置。第一个代码是一个 swipeview 活动。

标签: android button fragment swipeview


【解决方案1】:

在您在上面的 cmets 中提供的代码中:

    public class Exerfrag extends Fragment{
    private Button button1;
    Context context;

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

    button1 = (Button) view.findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
            Intent intent=new Intent(context, Listview.class);
            startActivity(intent);
    }
    });
return view;
}
}

context 永远不会被初始化。请改用getActivity(),这样您的onClick 方法将如下所示:

    button1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
            Intent intent=new Intent(getActivity(), Listview.class);
            startActivity(intent);
    }
    });

编辑

你的第二个Activity 也出现了问题:

public class Listview extends Activity {
        ExpandableListView exv;

        public Listview() {
                // TODO Auto-generated constructor stub
                exv=(ExpandableListView)findViewById(R.id.expandableListView1);
                exv.setAdapter(new MyAdapter(this));
        }

}

您永远不会调用onCreate(),您应该在其中放置其余的设置代码,包括setContentView(R.layout.-) 以建立您的布局。

编辑 2:

public class Listview extends Activity {
        ExpandableListView exv;

        protected void onCreate(android.os.Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.listview);

        };


        public Listview() {
                // TODO Auto-generated constructor stub
                exv=(ExpandableListView)findViewById(R.id.expandableListView1);
                exv.setAdapter(new MyAdapter(this));
        }

以下几行:

exv=(ExpandableListView)findViewById(R.id.expandableListView1);
                exv.setAdapter(new MyAdapter(this));

需要放在onCreate()里面。部分内容如下:

public Listview(){
    ....
}

被称为constructor。在这种情况下实际上根本不需要它,所以我的建议是完全删除它,以便您的整个班级看起来像这样:

public class Listview extends Activity {
            ExpandableListView exv;

            protected void onCreate(android.os.Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.listview);
                    exv=(ExpandableListView)findViewById(R.id.expandableListView1);
                    exv.setAdapter(new MyAdapter(this));
               }

这对于 Android 来说是相当基本的东西,所以我可能建议查看 developer 文档以获取示例 Activity 类,以及类似 Vogella 的网站

【讨论】:

  • @Mae 你的第二个活动从不调用onCreate()。看看我的编辑。
  • 对不起,我还在学习如何做事。你介意检查一下我做了什么吗? pastebin.com/F6YvQ2pf
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 2019-12-22
  • 2015-10-18
相关资源
最近更新 更多