2015-01-11 8 views
-2

Я использую андроид-студию и внешнюю библиотеку под названием myCBR. Я пытаюсь загрузить файл, который находится в моей папке с ресурсами. У меня есть основной вид деятельности: «MainActivity» и «CBRHandler». Я могу запустить приложение, но когда я пытаюсь загрузить проект с помощью кнопки переключения, мое приложение рушится. У вас есть идея, что может вызвать это? This is the structure of my project where only CBRHandler class and MainActivity class contains code the rest are empty activitiesMy Application keep crashing

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)  
+0

Какое исключение вы получаете, когда ваше приложение падает? Измените свой вопрос и добавьте эту информацию. – Robert

+0

@Robert, пожалуйста, посмотрите мое обновленное сообщение. благодаря –

ответ

2

В onPostExecute методе вашего AsyncTask, вы делаете это:

protected void onPostExecute(String paramString) { 
     MainActivity.this.myCBRtext.setText("Project: 'libraryDemo'"); 
     MainActivity.this.startQueryButton.setEnabled(true); 
} 

Вы никогда не инициализировать myCBRtext должным образом. Вы можете сделать это в onCreate:

@Override 
protected void onCreate(Bundle paramBundle) { 
    super.onCreate(paramBundle); 
    setContentView(R.layout.activity_main); 
    // Add the following 
    this.myCBRtext = (TextView) findViewById(R.id.my_cbr_text); 
    .... 
}