调用其他包下的类的方法



我正在尝试将字符串"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扩展并将MainActivitycontext发送给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;
}
}

最新更新