- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个应用程序为我 (MyProfileAboutFragment
) 和我的 friend (AboutFragment
) 提供个人资料 Activity 。
我从服务器获取我的 friend 列表,当我点击它时,我通过 intent 将用户名、照片、关于、电话等发送到我的 AboutFragment
。 如果缺少一个字段,它会显示默认文本。这工作正常。
现在我想这样做:当我打开 MyProfileAboutFragment
时,它应该从我的 sqlite 数据库中获取我的个人数据,并在缺少字段时返回默认文本。 我得到的不是默认文本,而是“null”。
我在 MyProfileAboutFragment
中做了所有事情,就像在我的 AboutFragment
中一样,只是我的数据不是从服务器返回,而是从 sqlite 中获取。
AboutFragment.java
:
public class AboutFragment extends Fragment {
private TextView userName, contactsStatus, contactUserStars, contactUserAbout;
private String contactId, contactName;
private ImageView contactStatusImage;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.profile_fragment_about, container,
false);
userName = (TextView) view.findViewById(R.id.contactUserName);
contactsStatus = (TextView) view.findViewById(R.id.contactsStatus);
contactUserStars = (TextView) view.findViewById(R.id.userStars);
contactUserAbout = (TextView) view.findViewById(R.id.contactUserAbout);
contactStatusImage = (ImageView) view.findViewById(R.id.contactStatusImage);
ContactProfileActivity activity = (ContactProfileActivity) getActivity();
Intent fromAvailableActivityIntent = activity.getIntent();
String userId = fromAvailableActivityIntent.getStringExtra("userId");
String contactUserName = fromAvailableActivityIntent.getStringExtra("userName");
String contactAbout = fromAvailableActivityIntent.getStringExtra("about");
userName.setText(contactUserName);
if (contactAbout != null && !contactAbout.isEmpty()) {
contactUserAbout.setText(contactAbout);
}
return view;
}
}
MyProfileAboutFragment.java
:
public class MyProfileAboutFragment extends Fragment {
private TextView userName, eMail, myPhone, stars, aboutMe;
private SQLiteHandler db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.profile_fragment_about_me, container,
false);
db = new SQLiteHandler(getActivity());
// Fetching user details from sqlite
HashMap<String, String> user = db.getUserDetails();
String id = user.get("uid");
String name = user.get("name");
String email = user.get("email");
String phone = user.get("phone");
String about = user.get("about");
userName = (TextView) view.findViewById(R.id.userName);
eMail = (TextView) view.findViewById(R.id.userEmail);
myPhone = (TextView) view.findViewById(R.id.userPhone);
stars = (TextView) view.findViewById(R.id.userStars);
aboutMe = (TextView) view.findViewById(R.id.userAboutMe);
userName.setText(name);
eMail.setText(email);
myPhone.setText(phone);
// I did the same exact thing in AboutFragment and it worked
if (about != null && !about.isEmpty()) {
aboutMe.setText(about);
}
return view;
}
}
profile_fragment_about.xml
:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/contactUserAboutTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@string/about"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/mycolorred"
android:textStyle="bold" />
<TextView
android:id="@+id/contactUserAbout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/contactUserAboutTitle"
android:layout_marginTop="8dp"
android:text="@string/long_text"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="#727272" />
</RelativeLayout>
profile_fragment_about_me.xml
:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/userAbout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="@string/about"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/mycolorred"
android:textStyle="bold" />
<TextView
android:id="@+id/userAboutMe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/userAbout"
android:layout_marginTop="8dp"
android:text="@string/long_text"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="#727272" />
</RelativeLayout>
SQLITE:
/**
* Storing user details in database
*/
public void addUser(String name, String email, String uid, String created_at, String about, String image, String phone) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, name); // Name
values.put(KEY_EMAIL, email); // Email
values.put(KEY_UID, uid); // Email
values.put(KEY_CREATED_AT, created_at); // Created At
values.put(KEY_ABOUT, about);
values.put(IMAGE, image);
values.put(PHONE, phone);
// Inserting Row
long id = db.insert(TABLE_USER, null, values);
db.close(); // Closing database connection
Log.d(TAG, "New user inserted into sqlite: " + id);
}
/**
* Getting user data from database
*/
public HashMap<String, String> getUserDetails() {
HashMap<String, String> user = new HashMap<>();
String selectQuery = "SELECT * FROM " + TABLE_USER;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
user.put("name", cursor.getString(1));
user.put("email", cursor.getString(2));
user.put("phone", cursor.getString(3));
user.put("uid", cursor.getString(4));
user.put("about", cursor.getString(5));
user.put("image", cursor.getString(6));
user.put("created_at", cursor.getString(7));
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Fetching user from Sqlite: " + user.toString());
return user;
}
编辑:
在我的个人资料 Activity 中,我在 Bharat singh 的回答之后添加了这个,以便在没有电话号码时显示:
if (about != null && !about.isEmpty() && !about.equals("null")) {
myPhone.setText(phone);
}
XML:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_horizontal_margin">
<!--android:clickable="true"-->
<ImageView
android:id="@+id/userPhoneImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:contentDescription="@string/phone"
app:srcCompat="@drawable/ic_icon_phone" />
<TextView
android:id="@+id/userPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:layout_toEndOf="@id/userPhoneImage"
android:text="@string/phone_default"
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
</RelativeLayout>
编辑 2:
Bharat singh 也回答了这个问题:
if (!about.isEmpty() && !about.equals("null")) {
myPhone.setText(phone);
}
最佳答案
替换这个
if (about != null && !about.isEmpty()) {
aboutMe.setText(about);
}
有了这个
if (about != null && !about.isEmpty() && !about.equals("null")) {
aboutMe.setText(about);
}
作为数据库返回“null”作为字符串
关于java - 如果 Android 中的值为空或 null,则显示默认文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868593/
我已经为使用 JGroups 编写了简单的测试。有两个像这样的简单应用程序 import org.jgroups.*; import org.jgroups.conf.ConfiguratorFact
我有一个通过 ajax 检索的 json 编码数据集。我尝试检索的一些数据点将返回 null 或空。 但是,我不希望将那些 null 或空值显示给最终用户,或传递给其他函数。 我现在正在做的是检查
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why does one often see “null != variable” instead of “
嗨在我们公司,他们遵循与空值进行比较的严格规则。当我编码 if(variable!=null) 在代码审查中,我收到了对此的评论,将其更改为 if(null!=variable)。上面的代码对性能有影
我正在尝试使用 native Cordova QR 扫描仪插件编译项目,但是我不断收到此错误。据我了解,这是代码编写方式的问题,它向构造函数发送了错误的值,或者根本就没有找到构造函数。那么我该如何解决
我在装有 Java 1.8 的 Windows 10 上使用 Apache Nutch 1.14。我已按照 https://wiki.apache.org/nutch/NutchTutorial 中提
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: what is “=null” and “ IS NULL” Is there any difference bet
Three-EyedRaven 内网渗透初期,我们都希望可以豪无遗漏的尽最大可能打开目标内网攻击面,故,设计该工具的初衷是解决某些工具内网探测速率慢、运行卡死、服务爆破误报率高以及socks流
我想在Scala中像在Java中那样做: public void recv(String from) { recv(from, null); } public void recv(String
我正在尝试从一组图像补丁中创建一个密码本。我已将图像(Caltech 101)分成20 X 20图像块。我想为每个补丁创建一个SIFT描述符。但是对于某些图像补丁,它不返回任何描述符/关键点。我尝试使
我在验证器类中自动连接的两个服务有问题。这些服务工作正常,因为在我的 Controller 中是自动连接的。我有一个 applicationContext.xml 文件和 MyApp-servlet.
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭10 年前。 问题必须表现出对要解决的问题的最低程度的了解。告诉我们您尝试过做什么,为什么不起作用,以
大家好,我正在对数据库进行正常的选择,但是 mysql_num_rowsis 为空,我不知道为什么,我有 7 行选择。 如果您发现问题,请告诉我。 真的谢谢。 代码如下: function get_b
我想以以下格式创建一个字符串:id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&id[]=%@&stringdata[]=%@&等,在for循环中,我得到
我正在尝试使用以下代码将URL转换为字符串: NSURL *urlOfOpenedFile = _service.myURLRequest.URL; NSString *fileThatWasOpen
我正在尝试将NSNumber传递到正在工作的UInt32中。然后,我试图将UInt32填充到NSData对象中。但是,这在这里变得有些时髦... 当我尝试将NSData对象中的内容写成它返回的字符串(
我正在进行身份验证并收到空 cookie。我想存储这个 cookie,但服务器没有返回给我 cookie。但响应代码是 200 ok。 httpConn.setRequestProperty(
我认为 Button bTutorial1 = (Button) findViewById(R.layout.tutorial1); bTutorial1.setOnClickListener
我的 Controller 中有这样的东西: model.attribute("hiringManagerMap",hiringManagerMap); 我正在访问此 hiringManagerMap
我想知道如何以正确的方式清空列表。在 div 中有一个列表然后清空 div 或列表更好吗? 我知道这是一个蹩脚的问题,但请帮助我理解这个 empty() 函数:) 案例)如果我运行这个脚本会发生什么:
我是一名优秀的程序员,十分优秀!