当我在Android手机上调试应用程序时,我绝对没有遇到任何错误,但在AVD上,我一开始就得到了一个NullPointerException()。我的Android设备在22 API的Lollipop(5.1.1)上运行,我的AVD在28 API的Pie(9.0)上运行。我在gradle中将最小SDK设置为21,编译SDK设置为28。
这是错误:
E/AndroidRuntime:致命html" target="_blank">异常:主进程:com。某物一些东西,PID:7328 java。lang.NullPointerException:尝试调用虚拟方法的java。lang.CharSequence android。小装置。文本视图。在com上的空对象引用上的getText()。某物某物FirstActivity 1美元。onEditorAction(FirstActivity.java:140)
它指向Firstactive的第140行:
字符串avatarInput=playerAvatar。getText()。toString();
它引用XML属性并将其文本值分配给字符串。现在,我确信XML实际上有一个文本值,原因有二:
1) 我自己硬编码了那个文本值。
2) 在我的Android设备上,第140行没有返回null。
因此,问题必须来自AVD。我尝试过其他虚拟设备,但都不起作用
<TextView
android:id="@+id/avatar"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:textSize="30sp"
android:clickable="true"
android:focusable="true"
android:gravity="center"
android:singleLine="true"
android:fontFamily= "@font/font_awesome_5_pro_light_300"
android:visibility="gone"
android:text="\uf007" />
公共类FirstActivity扩展了AppCompatActivity实现视图。OnClickListener{
private static final String TAG = "FirstActivity";
private static final List<String> namesArray = new ArrayList<>();
static final String KEY_NAME = "name";
static final String KEY_AVATAR = "avatar";
static final String KEY_ICON = "icon";
FirebaseFirestore db = FirebaseFirestore.getInstance();
RelativeLayout firstActLayout;
TextView numberOfPlayers;
EditText addPlayer;
TextView doneButton;
ImageView settingsButton;
TextView sunOrMoon;
TextView playerAvatar;
TextView characterImage;
private static int playerSum = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_activity);
firstActLayout = findViewById(R.id.first_act_layout);
numberOfPlayers = findViewById(R.id.number_of_players);
addPlayer = findViewById(R.id.add_player);
doneButton = findViewById(R.id.done_button);
settingsButton = findViewById(R.id.settings_button);
sunOrMoon = findViewById(R.id.sun_or_moon);
addPlayer.setOnClickListener(this);
doneButton.setOnClickListener(this);
settingsButton.setOnClickListener(this);
numberOfPlayers.setOnClickListener(this);
sunOrMoon.setOnClickListener(this);
playerAvatar = findViewById(R.id.avatar);
characterImage = findViewById(R.id.icon);
}
@Override
protected void onResume(){
super.onResume();
}
@Override
public void onClick(View v){
switch (v.getId()){
case R.id.add_player:
addPlayers();
break;
case R.id.done_button:
onClickConditions();
break;
case R.id.settings_button:
break;
case R.id.number_of_players:
Toast.makeText(this, "Total number of players", Toast.LENGTH_SHORT).show();
break;
case R.id.sun_or_moon:
Toast.makeText(this, "DAY", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(this, "DAY", Toast.LENGTH_SHORT).show();
break;
}
}
public void addPlayers (){
addPlayer.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_NEXT) {
namesArray.add(addPlayer.getText().toString());
String nameInput = addPlayer.getText().toString();
String avatarInput = playerAvatar.getText().toString();
String characterInput = characterImage.getText().toString();
addPlayer.getText().clear();
playerSum++;
numberOfPlayers.setText("");
numberOfPlayers.setText(String.valueOf(playerSum));
Map <String, Object> player = new HashMap<>();
player.put(KEY_NAME, nameInput);
player.put(KEY_AVATAR, avatarInput);
player.put(KEY_ICON, characterInput);
db.collection("Players") .document("Player_".concat(String.valueOf(playerSum)))
.set(player)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(FirstActivity.this,"Name Saved", Toast.LENGTH_SHORT)
.show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(FirstActivity.this,"Error!", Toast.LENGTH_SHORT)
.show();
Log.d(TAG, e.toString());
}
});
}
return false;
}
});
}
public void onClickConditions(){
if (playerSum >= 5){
Intent intent1 = new Intent(this, SecondActivity.class);
startActivity(intent1);
return;
}
Toast.makeText(this, "Minimum of 5 players are needed", Toast.LENGTH_LONG)
.show();
}
}
我必须使用AVD的原因是因为我的应用程序使用相机,我手机的相机坏了,所以我必须在AVD上运行我的应用程序。我已经将我的AVD相机设置为我的网络摄像头,但是我必须在140行通过错误,然后才能在AVD上使用相机。
从互联网上快速浏览,您的文本是
这里是:https://www.fileformat.info/info/unicode/char/f007/index.htm
它说
U F007不是有效的unicode字符。
...
Android不支持完整的Unicode字符集,它支持的部分取决于特定的设备和该设备的分布位置(事实上是运营商的分布位置)。
那么,也许模拟器缺少您设备上的语言包?因此,字符串为空。
解决方案可能是查看可下载字体:https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
或者为了证明这就是问题所在,将文本更改为
我正在尝试使用firebase手机验证登录,但它不起作用。代码没有被发送。我曾尝试使用“keytool-list-v-keystore~/.android/debug.keystore-alias androiddebugkey-storepass-android-keypass-android”添加sha-1和sha-256键(我也尝试了其他方法),但仍然不起作用。我试图启用android设备验
问题内容: 嗨,我只是简单地尝试在www.example.com上获取h1标签,该标签显示为“ Example Domain”。该代码适用于http://www.example.com,但不适用于https://www.exmaple.com。我该如何解决这个问题?谢谢 问题答案: PhantomJSDriver不支持(所有)DesiredCapabilities。 你会需要: 记录在这里:htt
所以我使用这种方法写入文件,它在windows上运行完全正常,但在mac上运行时,它会创建文件,但它们是空的。 我知道数据是正确的,因为它打印正确。感谢您的任何帮助,这真的让我绊倒了。
我只是在听讲座:(这是错误消息 E/Android运行时: 致命异常: 主进程: 8893 java.lang.空指针异常: 尝试调用虚拟方法 '布尔 java.lang.字符串.contains(java.lang.CharSequence)'.java.java.java 在空对象引用上android.os.AsyncTask.access$900(AsyncTask.java:192) at
列名称的类型为int[] 上述查询适用于postgresql,但不适用于hsqldb,甚至适用于sql 尝试的hsqldb版本:2.2.9和2.3.0 在hsqldb中工作的sql是从table_name中选择x,unnest(column_name)y(x)x和y不是该表的列。
一个使用Jersey在Java中构建的方法,它接受两个参数并存储在数据库中,它可以和postman一起正常工作,但当我在Android应用程序中使用它时,它不起作用。我试图通过截击和改装发送请求。 服务器端代码: Android代码: 公共无效寄存器(最终字符串用户名、最终字符串密码){ 邮差回应 截击请求: 公共无效寄存器Volley(最终字符串用户名,最终字符串密码){