2014-12-04 6 views
0

의도를 통해 하나의 활동에서 다른 활동으로 데이터를 전송합니다. 두 개의 다른 문자열을 보냈지 만 두 변수 모두 다음 활동에서 동일한 값을 얻습니다. 내가 응용 프로그램을 디버깅 할 때, 내가 좋아하는 값을 볼 수 있습니다Android 의도 데이터가 다른 활동에서 올바르게 수행되지 않았습니다.

1. QUIZ_TITLE 2 코스 : 당신은 내가 두 개의 문자열 의도 개체를 전달하고 볼 경우

public class Quizzes extends ActionBarActivity { 

    protected static final String QUIZ_TITLE = null; 
    protected static final String COURSE = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_quizzes); 

     listView = (ListView) findViewById(R.id.listview); 


     String[] values = new String[] { "Quiz # 2" }; 


     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, values); 



     listView.setAdapter(adapter); 

     // ListView Item Click Listener 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       final String item = (String) parent.getItemAtPosition(position); 

       Intent intent = new Intent(getApplicationContext(), QuizDetail.class); 
       intent.putExtra(QUIZ_TITLE, item); 
       final String course = (String)textview.getText(); 
       intent.putExtra(COURSE, course); 

       startActivity(intent); 

      } 

      }); 
     } 

} 

: 여기

내 코드입니다 1 QUIZ_TITLE = "퀴즈 # 1" 2 코스 = "컴퓨팅에 대한 소개"

모든 내가 다른 활동에 대한 이러한 문자열을 검색하고 때 잘 여기까지하지만, 내가 g etting 값 "Intro to Computing"둘 다에 대해, 여기에 그 클래스의 코드가 있습니다. 내가 Quizzes.QUIZ_TITLE 및 Quizzes.COURSE에서 "컴퓨팅 소개"같은 값을 받고있는 이유

public class QuizDetail extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_quiz_detail); 

     Intent intent = getIntent(); 

     String quizTitle = intent.getStringExtra(Quizzes.QUIZ_TITLE); 
     TextView quizTitleTextView = (TextView) findViewById(R.id.quizTitle); 
     quizTitleTextView.setText(quizTitle+" : TESTING.."); 

     String courseTitle = intent.getStringExtra(Quizzes.COURSE); 
     TextView courseTitleTextView = (TextView) findViewById(R.id.courseTitle); 
     courseTitleTextView.setText(courseTitle); 

    } 
} 

나는 확실하지 않다. 도움을 주시면 감사하겠습니다.

감사합니다 .. 당신은 둘 필요가 Anjum

당신은 intent.putExtra를() 나쁜 사용하는

답변

1

,

key에서 개체를 얻기 위해 먼저 PARAM로 (당신은 알 필요)

... 

String item = ...; 

intent.putExtra("COURSE", item); 

... 

그리고 당신과 엑스트라를 얻을 : 기타 활동 등의

... 

intent.getStringExtra("COURSE"); 

... 

수정 됨 !!!

아 이제 내가 너무 그것을 참조 : 키에 대한 null 값을 사용하는 경우에도 유용하지 않습니다 때문

protected static final String QUIZ_TITLE = null; 
protected static final String COURSE = null; 

정말 치명적이다

+0

고맙지 만 여기를보십시오. http : //developer.android.com/training/basics/firstapp/starting-activity.html – Anjum

+0

Intent intent = new Intent (this, DisplayMessageActivity.class); EditText editText = (EditText) findViewById (R.id.edit_message); String message = editText.getText(). toString(); intent.putExtra (EXTRA_MESSAGE, message); – Anjum

+0

잠시 후에 EXTRA_MESSAGE 상수를 정의 할 것입니다. – Anjum

0

Intent intent = getIntent(); 

String quizTitle = intent.getExtras().getString(Quizzes.QUIZ_TITLE); 
String courseTitle = iintent.getExtras().getString(Quizzes.COURSE); 

업데이트를 시도하십시오 가능한 경우 'null'키 값을 먼저 설정하고 키 'null'값을 다시 설정하여 덮어 씁니다. 에

변경을 예를

1

에 대한

protected static final String QUIZ_TITLE = "extra_quiz_title" 
protected static final String COURSE = "extra_course"; 

언급해야한다 여기에 몇 가지가있다.

QUIZ_TITLECOURSE은 모두 null입니다 (설정 위치를 볼 수 없음) Extras Bundle에 항목을 추가하면 값을 사전에 배치합니다. 이 경우 사용중인 사전의 키는 null입니다. 즉, 두 번째로 사전에 입력하면 QUIZ_TITLE (null)이 COURSE (null) 키로 바뀝니다.

QUIZ_TITLECOURSE을 실제 문자열 값으로 변경하면 문제가 정렬됩니다.

두 번째주의 사항은 getExtraStringgetExtras.getString 사이에 차이가 있다는 것입니다. 나는 이것에 대해 썼다. here

희망이 도움이된다.

+0

좋은 설명, 나는 @stel에 의해 주어진 대답을 업데이트했다. 그의 대답은 나를 위해 일한다. – Anjum

관련 문제