3 回答

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超22個(gè)贊
方法setText()有幾個(gè)簽名,但您需要的是:
public final void setText(CharSequence 文本)
所以你可以這樣做:
title.setText("Username: " + model.getName());
但是AS通常在這些情況下抱怨你應(yīng)該避免在里面連接字符串setText()
,
所以你可以做的是:
String str = "Username: " + model.getName(); title.setText(str);
您還應(yīng)該考慮將文字值存儲(chǔ)"Username: "
在以下資源中:
<string name="username">Username:</string>
并像這樣使用它:
String str = getResources().getString(R.string.username) + model.getName(); title.setText(str);

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
創(chuàng)建 getter 和 setter 是一種很好的做法,您可以在為模型定義變量后在 Android Studio 中自動(dòng)生成它們。除此之外,我不知道為什么在你getName()的方法中想要返回一個(gè) long 而你實(shí)際上是在返回一個(gè)字符串。更改long為String
像這樣 :
public String getName() {
return mName;
}
public void setName(String name) {
mName = name;
}

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
其他人所說(shuō)的關(guān)于在 setText 方法之外連接字符串的所有內(nèi)容都是有效的。至于在 Activity 或 Fragment 中的位置(我在此示例中使用 Fragment),我使用以下約定:
在我的方法之外的類主體中聲明我的類字段(用于類范圍的訪問(wèn))
public class MyFragment extends Fragment {
private TextView titleView;
public MyFragment() {
//Constructor
}
// and so on ...
}
然后,在 Fragment 膨脹后找到我的 TextView 引用,如果需要立即設(shè)置它的值
// ...
@override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
View view = inflater.inflate(R.layout.fragment_container, container, false);
titleView = view.findViewById(R.id.title);
String titleStr = "Username: " + model.getName();
titleView.setText(titleStr);
return view;
}
// ...
如果我期望有問(wèn)題的數(shù)據(jù)庫(kù)值會(huì)發(fā)生變化(例如,用戶在設(shè)置中更新他們的用戶名),那么我可能還希望使用某些生命周期方法,這些方法會(huì)在 Fragment (或 Activity)在暫停后恢復(fù)時(shí)觸發(fā),但是沒(méi)有完全重建。
// ...
@override
public void onResume() {
titleStr = "Username: " + model.getName();
titleView.setText(titleStr);
}
// ...
如果您不熟悉Android Activity 生命周期,這里有一個(gè)鏈接,這里是Fragments的一個(gè)很好的概要。希望這可以幫助。
添加回答
舉報(bào)