我正在尝试将字符串"terCd"返回到其他包。
但是,我的应用程序崩溃了。
错误消息是
E/AndroidRuntime:致命异常:main流程:com.example.switchdata,PID:10870
java.lang.RuntimeException:无法启动活动
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法"android.content.res.Resources android.coontent.Context.getResources((">
在tercodecomponent。TerCode.getTerCode(TerCode.java:25(
在com.example.switchdata.MainActivity.onCreate(MainActivity.java:22(
由以下原因引起:java.lang.NullPointerException:试图在空对象引用上调用虚拟方法"android.content.res.Resources android.coontent.Context.getResources((">
MainActivity.java
package com.example.switchdata;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import tercodecomponent.TerCode;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TerCode t = new TerCode();
String s = t.getTerCode("TERNAME");
Log.i("i", s);
}
TerCode.java
package tercodecomponent;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
public class TerCode extends AppCompatActivity {
public String getTerCode(String iptname){
Context context;
String json = "";
String terCd = "";
try {
InputStream is = getAssets().open("jsons/terData.json"); //jsonfile in assests
int fileSize = is.available();
byte[] buffer = new byte[fileSize];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
JSONObject jsonObject = new JSONObject(json);
JSONObject res = jsonObject.getJSONObject("res");
JSONArray array = res.getJSONArray("NAME_LIST");
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
String terName = object.getString("trml_Nm");
String terCode = object.getString("trml_Cd");
if (iptname.equals(terName)) {
terCd = terCode;
break;
}
}
} catch (IOException ex) {
ex.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return terCd;
}
}
如何查看"日志.I("I",s("?
除非TerCode
是"活动",否则不应扩展AppCompatActivity
。删除AppCompatActivity
扩展并将MainActivity
的context
发送给getTerCode
方法。然后使用CCD_ 7方法。
主要活动.java
package com.example.switchdata;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import tercodecomponent.TerCode;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TerCode t = new TerCode();
String s = t.getTerCode(getApplicationContext(), "TERNAME");
Log.i("i", s);
}
TerCode.java
package tercodecomponent;
import android.content.Context;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;
public class TerCode {
public String getTerCode(Context context, String iptname){
String json = "";
String terCd = "";
try {
InputStream is = context.getAssets().open("jsons/terData.json"); //jsonfile in assests
int fileSize = is.available();
byte[] buffer = new byte[fileSize];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
JSONObject jsonObject = new JSONObject(json);
JSONObject res = jsonObject.getJSONObject("res");
JSONArray array = res.getJSONArray("NAME_LIST");
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
String terName = object.getString("trml_Nm");
String terCode = object.getString("trml_Cd");
if (iptname.equals(terName)) {
terCd = terCode;
break;
}
}
} catch (IOException ex) {
ex.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return terCd;
}
}