Android 使用textview在片段和活动之间切换
我正在尝试使用textview将片段切换到活动。这意味着,当我按下文本视图(如开始)时,它会将我带到另一个活动。我实现了下面的代码,但不起作用。 FragmentThree.javaAndroid 使用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
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;
}