我尝试使用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)'
答案 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"
属于TextView
中xml
的属性 - 然后您必须将名为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);
}
}