Android 使用textview在片段和活动之间切换

Android 使用textview在片段和活动之间切换,android,android-fragments,Android,Android Fragments,我正在尝试使用textview将片段切换到活动。这意味着,当我按下文本视图(如开始)时,它会将我带到另一个活动。我实现了下面的代码,但不起作用。 FragmentThree.java public class FragmentThree extends Fragment implements View.OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup c

我正在尝试使用textview将片段切换到活动。这意味着,当我按下文本视图(如开始)时,它会将我带到另一个活动。我实现了下面的代码,但不起作用。 FragmentThree.java

public class FragmentThree extends Fragment implements View.OnClickListener {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.fragment_three_layout,container,false);

    }

    public void Onclick(View v) {
        switch (v.getId()) {
            case R.id.start:
                Intent intent = new Intent(getActivity(), MainActivity.class);
                startActivity(intent);
                break;
        }
    }


}//end of fragment
片段3.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#E1F5FE" >
   >

    <TextView
        android:layout_width="189dp"
        android:layout_height="94dp"
        android:text="Start"
        android:textSize="40dp"
        android:textColor="@color/textColor"
        android:textStyle="bold"
        android:typeface="serif"
        android:id="@+id/start"
        android:onClick="click"
        android:layout_gravity="bottom"
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true" />


</RelativeLayout>
添加了更多细节。当我实现View.OnClickListener时,我遇到以下错误类“FragmentThree”必须声明为抽象类,或者在“OnClickListener”中实现抽象方法“onClickView”

使用以下方法:

  TextView tv = (TextView) findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
           //DO YOUR THING HERE

        }
    });

在布局中指定onClick的方法名称为click 所以你的代码应该是

public void click(View v) {
  switch (v.getId()) {
    case R.id.start:
    Intent intent = new Intent(getActivity(), MainActivity.class);
    startActivity(intent);
    break;
  }
}

另外,将标记android:clickable=true设置为您的文本视图

在片段中编写以下代码onCreateView方法下面的三个类,并删除click listener

public void click(){
    Intent intent = new Intent(getActivity(), MainActivity.class);
            startActivity(intent);
}

试试这个,效果很好

 Button start = (Button) findViewById(R.id.start);

start.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        click(v);
    }
});



public void click(View v) {
    // does something 
}

 <TextView
        android:layout_width="189dp"
        android:layout_height="94dp"
        android:text="Start"
        android:textSize="40dp"
        android:textColor="@color/textColor"
        android:textStyle="bold"
        android:typeface="serif"
        android:id="@+id/start"
        android:onClick="click"
        android:layout_gravity="bottom"
        android:layout_centerVertical="true"
        android:layout_alignParentEnd="true" />
编写android:onClick=click时,它会在活动中搜索方法click 因此,在你的活动中,给出一个方法,如

public void click(View view) {
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}
这里的错误假设是,单击textview将移动到onClickListener。这样不行。 android:onClick=单击搜索方法在您的活动中单击

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
   View v=inflater.inflate(R.layout.fragment_three_layout,container,false);
TextView tv=(TextView)v.findviewByid(R.id.text1);
tv.setonClicklistner(getActivity());
    return v;

}
原因:在您的情况下,没有触发单击事件。这只是为了在任何widgt上设置单击事件,我们必须在其上设置单击列表器。

使用以下代码:

TextView tv = (TextView) findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

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

        }
    });
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view =  inflater.inflate(R.layout.fragment_three_layout,container,false);
TextView tv = (TextView) view.findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

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

        }
    }); return view;
    }

你混合了两种不同的点击方式-你可以添加

android:onClick="tvClick" 
属性添加到xml中的TextView-然后必须将名为TVClick的方法添加到活动中

或者,您可以实现View.OnClickListener,覆盖onClick方法:


}

请遵循以下代码:

TextView tv = (TextView) findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

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

        }
    });
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view =  inflater.inflate(R.layout.fragment_three_layout,container,false);
TextView tv = (TextView) view.findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

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

        }
    }); return view;
    }


您应该在包含以下内容的活动中编写一个方法clickfragment@Logic你能详细说明一下吗?setonclicklistner用于textview,比如textview.setOnclickListnerthis;在onCreateView中,查看我发布的答案我将此setOnClickListenergetActivity;放置在何处;?还有,我是否需要执行此公共类FragmentThree扩展片段实现视图。OnClickListener?因为我得到的错误类“FragmentThree”必须声明为抽象类或在“OnClickListener”中实现抽象方法“onClickView”,请帮助。我不太明白该把代码放在哪里好吗?如何分配文本视图?抱歉,我添加了其他详细信息。编辑它。我需要实现Onclicklistener吗?它说click从来没有用过谢谢你的解释。Hi@boyapati answer解决了我的问题。你的两个答案很相似。但我不能同时勾选两者。我只是想说谢谢你的解释。我把你的代码放在这行后面:return inflater.inflater.layout.fragment\u three\u layout,container,false;但是我发现这个错误无法解决方法“FindViewByDint”请看我添加了另一个答案它说方法“clickandroid.view.view”从未使用过并且我需要在片段后包括ImplementOnClickLister吗?你用建议的方法尝试了吗?它应该工作,你可以忽略警告。如果在布局中指定onClick属性,则不需要设置onClick Listener,但请添加clickable属性并将其设置为true,因为您有文本视图而没有按钮。您好,我尝试了@boyapati的答案。成功了。谢谢你的帮助。嗨,我把它贴在onCreateview上,它说无法解析方法“FindViewByDint”,而且方法也不会从其超类重写方法。它说缺少返回语句
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View view =  inflater.inflate(R.layout.fragment_three_layout,container,false);
TextView tv = (TextView) view.findViewById(R.id.start);
  tv.setOnClickListener(new OnClickListener() {

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

        }
    }); return view;
    }