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

时间:2016-01-12 10:41:26

标签: android android-fragments

我尝试使用textview将片段切换为活动。这意味着当我按下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'必须被声明为abstract或在'OnClickListener'中实现抽象方法'onClick(View)'

10 个答案:

答案 0 :(得分:2)

您在布局中指定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"设置为TextView

答案 1 :(得分:1)

当您撰写android:onClick="click"时,它会在click()中搜索方法Activity 所以在Activity中提供类似

的方法
public void click(View view) {
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}

你在这里假设的错误是,textview上的点击将移动到onClickListener。它不会以这种方式工作。 android:onClick="click"Activity

中搜索了点击的方法

答案 2 :(得分:0)

使用此:

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

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

        }
    });

答案 3 :(得分:0)

在下面onCreateView方法的FragmentThree类中编写下面的代码并删除click listener

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

答案 4 :(得分:0)

试试这个工作正常

 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" />

答案 5 :(得分:0)

试试这个:

@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上的点击事件,我们必须在其上设置点击列表器。

答案 6 :(得分:0)

使用以下代码:

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);

        }
    });

答案 7 :(得分:0)

您正在混合实现Click的两种不同方式 - 您可以添加

android:onClick="tvClick" 

属于TextViewxml的属性 - 然后您必须将名为tvClick()的此方法添加到Activity

public void tvClick(){
    //...
}

或者你可以implement View.OnClickListener覆盖 onClick()方法:

@Override
public void onClick(View v) {
     switch (v.getId()) {
        case R.id.start:
           // ...
    }
} 

答案 8 :(得分:0)

    You missed setOnClickListener(getActivity());
    Use this to perform onClick()

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

}

答案 9 :(得分:0)

请按照以下代码:

namespace std {
    size_t hash<Foo>::operator()(Foo const& f) const {
        if (f.isDeviceSet()) {
            std::pair<bool, int> p(f.isDeviceSet(), f.device);
            boost::hash< std::pair<bool, int> > hasher;
            return hasher(p);
        }
        std::pair<bool, std::string> p(f.isDeviceIdSet(), f.name);
        boost::hash< std::pair<bool, std::string> > hasher;
        return hasher(p);
     }
}