-2
我正在使用android studio和名爲myCBR的外部庫。我正在嘗試加載放置在我的資產文件夾中的文件。我有主要活動稱爲:「MainActivity」和「CBRHandler」。我可以運行應用程序,但是當我嘗試通過切換按鈕加載項目時,我的應用程序崩潰。你有什麼想法可能會導致它嗎? 我的應用程序不斷崩潰
public class MainActivity extends Activity {
Boolean InternetAvailable = false;
Button checkInternet;
DetectConnection detect_connection;
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10L;
private static final long MIN_TIME_PASSED_FOR_UPDATES = 10000L;
private static final String PRJ_FILENAME = "financeDemo.prj";
private static final String PROJECTNAME = "financeDemo";
final String TAG = "[HUB]";
protected CBRHandler cbrHandler = null;
private AsyncTask<String, Integer, String> cbrTask;
protected HashMap<String, String> currentLocales;
protected Location currentLocation;
protected ProgressDialog dialog;
protected LocationManager locManager;
protected Button locationButton;
protected String locationlatitude;
protected String locationlongitude;
protected TextView myCBRtext;
protected ToggleButton myCBRtoggleButton;
protected Button networkButton;
protected TextView networkText;
protected Button socialProfileButton;
protected TextView socialText;
protected Button startQueryButton;
protected Button userDetailsButton;
@Override
protected void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
setContentView(R.layout.activity_main);
//Setting up button for "My Librarian" section
Button MyLibrarian = (Button) findViewById(R.id.btnMyLibrarian);
MyLibrarian.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, MyLibrarianActivity.class));
}
});
//Setting up button for "Around Me" section
Button AroundMe = (Button) findViewById(R.id.btnAroundMe);
AroundMe.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, AroundMeActivity.class));
}
});
//Setting up button for "Find your way" section
Button FindYourWay = (Button) findViewById(R.id.btnFindYourWay);
FindYourWay.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, FindYourWayActivity.class));
}
});
//Setting up button for "Author" section
Button Author = (Button) findViewById(R.id.btnAuthor);
Author.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, AuthorActivity.class));
}
});
//Setting up "Check for network connectivity button"
checkInternet = (Button) findViewById(R.id.btnNetworkConnectivity);
detect_connection = new DetectConnection(getApplicationContext());
checkInternet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
InternetAvailable = detect_connection.InternetConnecting();
if (InternetAvailable) {
showAlertDialog(MainActivity.this, "Network Connection",
"Network connection is available", true);
} else {
showAlertDialog(MainActivity.this, "No Network Connection",
"Network connection is not available", false);
}
}
});
{
this.myCBRtoggleButton = ((ToggleButton) findViewById(R.id.myCBRtoggleButton));
this.myCBRtoggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View paramAnonymousView) {
if (MainActivity.this.myCBRtoggleButton.isChecked()) {
Toast.makeText(MainActivity.this, "Starting a myCBR task", Toast.LENGTH_SHORT).show();
MainActivity.this.cbrTask = new MainActivity.OpenMyCBRProjectTask(MainActivity.this).execute(new String[0]);
return;
}
Toast.makeText(MainActivity.this, "Resetting", Toast.LENGTH_SHORT).show();
MainActivity.this.cbrTask.cancel(true);
MainActivity.this.startQueryButton.setEnabled(false);
CBRHandler.resetInstance();
}
});
this.startQueryButton = ((Button) findViewById(R.id.startQueryButton));
this.startQueryButton.setEnabled(false);
this.startQueryButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View paramAnonymousView) {
Intent localIntent = new Intent(MainActivity.this, MyLibrarianActivity.class);
MainActivity.this.startActivity(localIntent);
}
});
FileIO.copyAssetFile(this, getResources(), "libraryDemo.prj");
return;
}
}
class OpenMyCBRProjectTask extends AsyncTask<String, Integer, String> {
OpenMyCBRProjectTask() {
}
public OpenMyCBRProjectTask(MainActivity mainActivity) {
}
protected String doInBackground(String[] paramArrayOfString) {
MainActivity.this.cbrHandler = CBRHandler.getInstance();
try {
MainActivity.this.cbrHandler.createProjectFromPRJ("libraryDemo", "libraryDemo.prj", "data/data/" + MainActivity.this.getPackageName() + "/files/");
return "Opening project 'libraryDemo'";
} catch (Exception localException) {
Log.e("[HUB]", "Exception caught while trying to call createProjectFromPRJ");
Log.e("[HUB]", localException.toString());
}
return "Failed to open project";
}
protected void onPostExecute(String paramString) {
MainActivity.this.myCBRtext.setText("Project: 'libraryDemo'");
MainActivity.this.startQueryButton.setEnabled(true);
}
protected void onProgressUpdate(Integer[] paramArrayOfInteger) {
super.onProgressUpdate(paramArrayOfInteger);
}
}
public void showAlertDialog(Context context, String t, String m, Boolean status) {
AlertDialog message = new AlertDialog.Builder(context).create();
message.setTitle(t);
message.setMessage(m);
message.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
message.show();
}
}
而且我CBRHandler活動
public class CBRHandler
{
private static CBRHandler singletonInstance;
private final String TAG = "[CBR]";
private Concept concept = null;
private String conceptName = "Resource";
private DefaultCaseBase ResourcesCB;
private String multiplevalueseparator = ",";
private String prjFileName = "";
private Project project = null;
private LinkedHashMap<String, String> queryAttributes = new LinkedHashMap();
public static CBRHandler getInstance()
{
if (singletonInstance == null)
singletonInstance = new CBRHandler();
return singletonInstance;
}
public static void resetInstance()
{
singletonInstance = null;
}
public void addQueryAttribute(String paramString1, String paramString2)
{
if (this.queryAttributes.containsKey(paramString1))
this.queryAttributes.remove(paramString1);
this.queryAttributes.put(paramString1, paramString2);
}
public void createProjectFromPRJ(String paramString1, String paramString2, String paramString3)
{
try
{
Log.i("[CBR]", "Assigning project: " + paramString3 + paramString2);
this.project = new Project(paramString3 + paramString2);
Log.i("[CBR]", "Assigning concept: " + this.conceptName);
this.concept = this.project.getConceptByID(this.conceptName);
return;
}
catch (Exception localException)
{
Log.e("[CBR]", "Failed to create project from .prj");
Log.e("[CBR]", localException.toString());
}
}
public boolean hasProject()
{
return this.project != null;
}
}
的例外,我得到的是在這裏:
1162-1162/dyankov.mylibraryrecommender E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at dyankov.mylibraryrecommender.MainActivities.MainActivity$OpenMyCBRProjectTask.onPostExecute(MainActivity.java:245)
at dyankov.mylibraryrecommender.MainActivities.MainActivity$OpenMyCBRProjectTask.onPostExecute(MainActivity.java:217)
當您的應用程序崩潰時,會得到什麼異常?請編輯您的問題並添加此信息。 – Robert
@Robert請看看我更新的帖子。謝謝 –