2015-12-26 4 views
0

Я делаю proyect, используя SDK Evernote для Android. Я пытаюсь получить содержимое из одной из моих заметок (onItemClick), но каждый раз, когда я использую этот метод, сбой приложения с исключением потока. Это часть кода, где я использую метод:Evernote getNoteContent() Ошибка Asynctask

public void onFragmentInteraction(Note note) throws EDAMUserException, EDAMSystemException, EDAMNotFoundException, TException, ExecutionException, InterruptedException { 
    String noteGuid = note.getGuid(); 
    String Content = new GetNoteTask().execute(noteGuid).get(); 
    Intent intent = new Intent(this, ViewNoteActivity.class); 
    intent.putExtra(intent.EXTRA_TEXT, Content); 
    startActivity(intent); 

} 

public class GetNoteTask extends AsyncTask<String, Void, String> { 
private EvernoteSession mEvernoteSession; 


public String noteContent(String guid) throws EDAMUserException, EDAMSystemException, TException, EDAMNotFoundException { 
    final EvernoteNoteStoreClient noteStoreClient = mEvernoteSession.getEvernoteClientFactory().getNoteStoreClient(); 
     String noteText; 
     noteText = noteStoreClient.getNoteContent(guid); 
     return noteText; 
    } 

@Override 
protected String doInBackground(String... params) { 
    String guid = params[0]; 
    String noteContent = null; 
    try { 
     noteContent = noteContent(guid); 
    } catch (EDAMUserException e) { 
     e.printStackTrace(); 
    } catch (EDAMSystemException e) { 
     e.printStackTrace(); 
    } catch (TException e) { 
     e.printStackTrace(); 
    } catch (EDAMNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return noteContent; 
} 

}

Первый метод находится в моем MainActivity, который проходит фрагмент. Второй - это моя задача получить заметку о содержании. Это ломается, когда я инициализирую клиента Evernote в асинтете.

final EvernoteNoteStoreClient noteStoreClient = mEvernoteSession.getEvernoteClientFactory().getNoteStoreClient(); 
     String noteText; 

Спасибо всем заранее и надеемся, что вы сможем мне помочь!

ответ

0

Я уже нашел решение. Я не могу вызвать EvernoteClient без использования mEvernoteSession, которое было объявлено в моей основной деятельности, поэтому я попытался отправить noteStoreClient, но он всегда был пустым, потому что метод был закрытым и не защищен, поэтому я не заполнил его, когда я его отправлял ,

Наконец я создал статический класс, где я сохранить переменные:

public static class MyTaskParams{ 
     public String guid; 
     public EvernoteNoteStoreClient noteStore; 


    public MyTaskParams(String noteGuid, EvernoteNoteStoreClient noteStoreClient) { 
     this.guid=noteGuid; 
     this.noteStore=noteStoreClient; 
    } 

и я отослано позже к AsyncTask.

MyTaskParams params = new MyTaskParams(noteGuid,noteStoreClient); 

     GetNoteTask GetNoteTask = new GetNoteTask(); 

Итак, наконец, мой AsyncTask выглядит следующим образом:

public class GetNoteTask extends AsyncTask<MainActivity.MyTaskParams,Void , String> { 

public String noteContent(EvernoteNoteStoreClient noteStoreClient, String guid) throws EDAMUserException, EDAMSystemException, TException, EDAMNotFoundException { 
     String noteText; 
     noteText = noteStoreClient.getNoteContent(guid); 
     return noteText; 
    } 


protected String doInBackground(MainActivity.MyTaskParams... params) { 

    String noteContent = null; 
    String guid = params[0].guid; 
    EvernoteNoteStoreClient noteStoreClient = params[0].noteStore; 
    try { 

     noteContent = noteContent(noteStoreClient, guid); 
    } catch (EDAMUserException e) { 
     e.printStackTrace(); 
    } catch (EDAMSystemException e) { 
     e.printStackTrace(); 
    } catch (TException e) { 
     e.printStackTrace(); 
    } catch (EDAMNotFoundException e) { 
     e.printStackTrace(); 
    } 
    return noteContent; 
} 

Спасибо всем, и надеемся, что это поможет кому-то в будущем!

Смежные вопросы