我试图在我的活动片段中更改文本视图的文本颜色,但由于此错误没有任何更改:
Cannot find symbol method findViewById(int)
我该怎么做才能解决这个问题?
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="@color/black">
<TextView
android:id="@+id/WCBank_textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Medium"/>
</RelativeLayout>
爪哇
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class TabWCBankTerminus extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v =inflater.inflate(R.layout.tab_wc_bank_terminus,container,false);
return v;
TextView txt = (TextView)findViewById(R.id.WCBank_textView1);
txt.setText(Html.fromHtml("<font color='#FFD300'>text0</font>" +
"<font color='#00A4A7'> text1</font>" +
"<font color='#E32017'> text2</font>" +
"<font color='#FFFFFF'> text3</font>"
));
}
}
答案 0 :(得分:2)
Fragment
未定义findViewById()
方法,您需要使用View
对象(v
)来调用它。
这背后的原因是,Fragment
在布局膨胀之前对布局一无所知。您正在给布局充气并返回一个视图对象,其中包含有关您尝试配置的内容的信息,因此您需要在View
对象而不是Fragment
上调用该方法。
更改为:
TextView txt = (TextView)v.findViewById(R.id.WCBank_textView1);
然后在方法的最后,return v
,而不是在进行配置更改之前。
完成后看起来应该是这样的:
public class TabWCBankTerminus extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v =inflater.inflate(R.layout.tab_wc_bank_terminus,container,false);
TextView txt = (TextView)v.findViewById(R.id.WCBank_textView1);
txt.setText(Html.fromHtml("<font color='#FFD300'>text0</font>" +
"<font color='#00A4A7'> text1</font>" +
"<font color='#E32017'> text2</font>" +
"<font color='#FFFFFF'> text3</font>"
));
return v;
}
}
答案 1 :(得分:1)
在你的onCreateView
中,你有两个错误。首先,在您的情况下,返回语句必须是最后一个,否则后面的语句是无法访问的。其次,您必须通过findViewById
调用v
。与Activity
不同,Fragment没有findViewById
方法
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v =inflater.inflate(R.layout.tab_wc_bank_terminus,container,false);
TextView txt = (TextView)v.findViewById(R.id.WCBank_textView1);
txt.setText(Html.fromHtml("<font color='#FFD300'>text0</font>" +
"<font color='#00A4A7'> text1</font>" +
"<font color='#E32017'> text2</font>" +
"<font color='#FFFFFF'> text3</font>"
));
return v;
}