2017-10-03 4 views
0

루프를 만들려는 배열이 2 개 있고 개체로 패키지하고 다른 조각으로 보내서 번들로 검색 한 다음 해당 번들에 액세스하지만 null 포인터를 얻고있다.조각 개체를 루프로 묶고 번들을 검색하는 방법

public static ViewPagerFragmentActivity newInstance(Question question) 
    { 
     ViewPagerFragmentActivity f = new ViewPagerFragmentActivity(); 
     Bundle bdl = new Bundle(2); 
     bdl.putString("QuestionID", question.getQuestionNumber()); 
     bdl.putString("QuestionString", question.getQuestionString()); 
     f.setArguments(bdl); 
     return f; 
    } 

를 내가 시도에서 QuestionID에 액세스 할 때 : 조각 1에서

, 나는 다음과 같은 방법을 다음과 같이

public Fragment getQuestionFragments(String[] array_id, String[] array1) { 

     int count = 0; 

     for (String x : array_id) { 

      Question question = new Question(); 
      question.setQuestionNumber(x); 
      question.setQuestion(array1[count]); 
      question_list.add(question); 
      count++; 

      ViewPagerFragmentActivity.newInstance(question); 

     } 

     goToQuestions(); 

     return null; 
    } 

그런 다음 조각 2에서 나는 밖으로 루프 질문 개체를 검색 번들은 question = (Question) getArguments().get("QuestionID");을 사용하여 널 포인터를 던집니다.

내가 읽은 것으로부터 나는 이것이 정확하다고 느꼈지만 나는 분명히 뭔가를 놓쳤다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

미리 감사드립니다.

답변

1

몇 가지 문제가있을 수 있으므로 모든 문제를 해결하기 위해 더 많은 코드를 게시해야 할 것입니다. 하지만 여기서 큰 문제는 안드로이드 시스템을 사용하지 않고 액티비티를 인스턴스화하려는 것입니다. newInstance 메소드에서 Android OS가 활동을 시작하는 데 사용하는 인 텐트를 만들기 위해이를 변경해야합니다. 그래서 당신은 이렇게 될 당신의 newInstance 메소드를 변경해야

public static Intent newInstance(Context context, Question question) 
{ 
    Intent intent = new Intent(context, ViewPagerFragmentActivity.class); 
    intent.putString("QuestionID", question.getQuestionNumber()); 
    intent.putString("QuestionString", question.getQuestionString()); 
    return intent; 
} 

그런 다음 당신이 그것을보고하기 위해 현재에서 그 활동을 시작해야합니다

startActivity(ViewPagerFragmentActivity.newIntent(this, question)); 

을 잘 모르겠어요 무엇을 귀하의 루프 내에서 노력하고 더 많은 정보가 가능성이 그걸로 뭘 하려는지 해결할 필요가 있습니다. 귀하의 경우 그래서

bdl.putString("QuestionID", question.getQuestionNumber()); 

개체를 얻을 수있는 올바른 방법으로하지 않습니다 : 당신이 당신의 의도에 문자열을 퍼트 때문에

0

@tim.paetz 대답을 보완, 당신은 질문 객체에 문자열을 캐스팅하려는 같은 짓을 한거야 :

question = (Question) getArguments().get("QuestionID"); 

그러나 많은 방법 중 하나 일 수 있습니다

String questionId = getArguments().getString("QuestionID"); 
Question question = //find in the database with this id