我无法使用"TestCrowd.java"从另一个类获取 jsonObject



TestCrowd.java

public class TestCrowd extends Application {
private JSONObject role,details;
private Bitmap image;
public JSONObject getRole() {
return role;
}
public void setRole(JSONObject role) {
this.role = role;
}
public JSONObject getDetails() { return details; }
public void setDetails(JSONObject details) {
this.details = details;
}
public void setImage(Bitmap image) { this.image = image; }
public Bitmap getImage() {return image;}
}

新工单活动.java

public class NewWorkOrderActivity extends Activity implements MenuItem.OnMenuItemClickListener {
private ImageButton ibtnEdit;
SystemPreference systemPreference;
int a1;
String s1;
List<String> arraySpinner_1;
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nwworder);
systemPreference = SystemPreference.getInstance(this.getApplicationContext());
String token = systemPreference.getData(getResources().getString(R.string.stoken));
Spinner spinner_1 = (Spinner) this.findViewById(R.id.prioritySpinner);
arraySpinner_1 = new ArrayList<>();
try {
JSONObject details = ((TestCrowd) getApplication() ).getDetails(); /*where the error is located*/
JSONObject priority = details.getJSONObject("priorities");
JSONArray priority_arry = priority.getJSONArray("value");
for (int i = 0; i < priority_arry.length(); i++) {
arraySpinner_1.add(priority_arry.get(i).toString());
}
ArrayAdapter<String> spinnerAdepter_1 = new ArrayAdapter<String>(this,R.layout.spinner_item,arraySpinner_1);
spinner_1.setAdapter(spinnerAdepter_1);
} catch (JSONException e) {
e.printStackTrace();
}
initialized();
}
private void initialized() {
ibtnEdit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Spinner spinner1 = (Spinner)findViewById(R.id.prioritySpinner);
a1 = spinner1.getSelectedItemPosition();
s1 = Integer.toString(a1);
String token = systemPreference.getData(getResources().getString(R.string.stoken));
String posturl = getResources().getString(R.string.baseurl) + "workorder/addworkorder";
HashMap<String, String> data = new HashMap<String, String>();
data.put("token",token.toString());
data.put("priority", s1);
/*volley get request here*/ 
}
});
}
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
}

当我运行该项目时,它在>>JSONObject details = ((TestCrowd) getApplication() ).getDetails();<lt<

错误是,

java.lang.RuntimeException:无法启动活动ComponentInfo{com.example.malith.testcrowd.com/example.malith.testcrowd.NewWorkOrderActivity}:java.lang.ClassCastException:android.app.Application无法强制转换为com.example.marith.testcrowd.testcrowd在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2646)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2707)在android.app.ActivityThread.-wrap12(ActivityThreads.java)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1460)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThreads.java:6077)位于java.lang.reflect.Method.ioke(本机方法)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:755)导致原因:java.lang.ClassCastException:android.app.Application无法转换为com.example.malith.testcrowd.testcrowd网址:com.example.malith.testcrowd.NewWorkOrderActivity.onCreate(NewWorkOrderActivity.java:50)

在这种情况下,您应该尝试使用方法(TestCrowd) getApplicationContext();
无论如何,您的TestCrowd类应该在清单文件中注册,所以请检查此项。

最新更新