java - Android 将可点击文本设置为从一个 fragment 转到另一个 fragment

标签 java android android-fragments spannablestring

我需要做这样的事情。假设我有 2 个 fragment A 和 B。在 fragment A 中有一个可以点击的文本,当用户点击这个文本时,他可以转到 fragment B。This示例帮助我做到了,但我认为它不适用于 fragment 。所以请告诉我解决这个问题的方法。

public class myClaimsFragment extends Fragment {

   TextView requestNewClaim;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View newClaimRequest = inflater.inflate(R.layout.activity_my_claims, container, false);


        SpannableString ss = new SpannableString("Request");
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View textView) {
                Intent intent = new Intent(getActivity(),LoginActivity.class);
                startActivity(intent);
            }
        };
        ss.setSpan(clickableSpan , 0,ss.length() , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        requestNewClaim =(TextView) newClaimRequest.findViewById(R.id.requestHere);
        requestNewClaim.setText(ss.toString());
        requestNewClaim.setMovementMethod(LinkMovementMethod.getInstance());

        return newClaimRequest;
    }

}

布局 XML

        <LinearLayout
            android:id="@+id/view2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">



            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/requestHere"
                android:clickable="true"
                android:textSize="20dp"
                android:textStyle="bold"
                android:textColor="#000000"
                android:layout_marginLeft="20dp"
                android:layout_alignParentRight="true"
                android:layout_alignParentEnd="true"/>

        </LinearLayout>

最佳答案

如果 LoginActivity 是 fragment 类,那么在 TextView 上使用 setOnClickListener 就可以了。但是对于 fragment 更改,您必须将 Intent 更改为 fragmentTransaction,

使用类似的东西,

textview.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    getFragmentManager().beginTransaction().replace(R.id.container, new LoginActivity() ).addToBackStack("").commit();
});

但是,如果你想使用 SpannableString 那么就这样做,

ClickableSpan clickableSpan = new ClickableSpan() {
        @Override
        public void onClick(View textView) {
            getFragmentManager().beginTransaction().replace(R.id.container, new LoginActivity() ).addToBackStack("").commit();
        }
    };

在这里,R.id.container 是您的主要 Activity 布局的 fragment ,其中新 View 将被替换。

关于java - Android 将可点击文本设置为从一个 fragment 转到另一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30973303/

相关文章:

java - 在 Android 屏幕旋转后,是否有适当的方法来保留带有自定义对象列表的对话框?

java - 在 Java 中渲染 "Slice"的球体 - 效率

java - 顺时针旋转链表

java - 套接字多线程死锁

java - 单个 Activity 中的多个 WebView

android - 可信执行环境(TEE)中的客户端应用程序和可信应用程序

java - Swing设计JTable自动刷新?

android - AppCompat v7 r21 在 values.xml 中返回错误?

android - 关闭 fragment 中的自动旋转

android - 无法修改写入事务 Realm Android 之外的托管对象