3 回答

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

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

TA貢獻1155條經驗 獲得超0個贊
其他人所說的關于在 setText 方法之外連接字符串的所有內容都是有效的。至于在 Activity 或 Fragment 中的位置(我在此示例中使用 Fragment),我使用以下約定:
在我的方法之外的類主體中聲明我的類字段(用于類范圍的訪問)
public class MyFragment extends Fragment {
private TextView titleView;
public MyFragment() {
//Constructor
}
// and so on ...
}
然后,在 Fragment 膨脹后找到我的 TextView 引用,如果需要立即設置它的值
// ...
@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;
}
// ...
如果我期望有問題的數據庫值會發生變化(例如,用戶在設置中更新他們的用戶名),那么我可能還希望使用某些生命周期方法,這些方法會在 Fragment (或 Activity)在暫停后恢復時觸發,但是沒有完全重建。
// ...
@override
public void onResume() {
titleStr = "Username: " + model.getName();
titleView.setText(titleStr);
}
// ...
如果您不熟悉Android Activity 生命周期,這里有一個鏈接,這里是Fragments的一個很好的概要。希望這可以幫助。
添加回答
舉報