2015-01-21 1 views
0

이 질문에 시간을 할애 해 주셔서 감사합니다. 다른 Activity에서 appendToMessageHistory 메서드를 호출 할 때 추가해야하는 editview가 하나 있습니다. 초 활동다른 활동에서 보내는 동안 editview ID를 설정할 수 없습니다.

EditText et; 
    Messaging msg = new Messaging(getApplicationContext(), et); 
    msg.appendToMessageHistory(username, messegestr); 

메시징 활동.

private EditText messageHistoryText; 
messageHistoryText = (EditText) findViewById(R.id.messageHistory); 

private Context mCon; 

    public Messaging(Context applicationContext, EditText name) { 
     // TODO Auto-generated constructor stub 

     this.mCon = applicationContext; 
     this.messageHistoryText = name; 
    } 

public Messaging() { 

    }//by default constructor 

public void appendToMessageHistorysend(String username, String message) { 
     if (username != null && message != null) { 

      if (messageHistoryText != null) { 
           messageHistoryText.append(Html 
             .fromHtml(username1)); 
           messageHistoryText.append(Html 
             .fromHtml(message1)); 
          } 

          else { 
           Toast.makeText(mCon, 
             "hey yo not working value are null", 
             Toast.LENGTH_LONG).show(); 
          } 
       } 

      } 

     } 
    } 

여전히 messageHistoryText에 대해 null이 반환됩니다. 및 응용 프로그램 충돌 다시 코드의 첫 번째 블록에서 시간

에 대한
+1

전체 편집 텍스트를 전달해야하는 이유는 무엇입니까? 사용자가 입력 한 텍스트 만 전달하십시오. et.getText를 전달하십시오. 그리고 메시징에서 해당 텍스트를 사용하십시오. – EagleEye

+0

'Messaging'은'Activiy'입니까? – ben75

+0

예 메시징은 활동입니다. –

답변

0

감사합니다 : 당신이 그것을 액세스하려고하면

대상 "등이"초기화되지
EditText et; 
Messaging msg = new Messaging(getApplicationContext(), et); 
msg.appendToMessageHistory(username, messegestr); 

...이 충돌합니다.

+0

EditText et = null 및 EditText et = (Edittext) findviewbyId (R.id.sometex); 하지만 첫 번째 경우의 목표는 완료되지 않았고 두 번째 경우에는 다른 레이아웃에서 ID에 액세스하려고했습니다. –

+0

실제 코드를 게시하고 조각이 아닙니다. 나는 그것이 특정 순서로 실행되었다고 가정하고 대답했다. 그러나 실제로 어떤 순서도 지정하지 않는다는 것을 깨닫는다 ... "다른 활동"에서 "첫 번째 코드 집합"이라고 부르는 경우 어떤 것들을 순서대로하는지 명확하지 않다. 무슨 일이 일어나고 있는지, 설정되어 있지 않은지 등은 – Jim

0

활동 라이프 사이클은 Android 프레임 워크에서 관리합니다. 액티비티에 커스텀 생성자를 작성하는 것은 큰 실수입니다 (기존의 생성자를 오버라이드하는 것은 매우 드문 경우입니다).

Android 용으로 개발할 때는 자신의 코드에서 Activity 생성자를 호출하면 안됩니다. 그리고 내가 말할 때 결코 나는 를 의미하지 않는다!

활동을 인스턴스화하려면 : Intent을 사용해야하며 Android에서 작업을 수행해야합니다. 활동 Messaging 포함하지 않기 때문에 당신이 사용자 정의 생성자에서 사용할 때

messageHistoryText가 null :

무엇을 코딩하기 전에 Android activity life-cycle

귀하의 질문에 정확하게 대답하기 위해 이해하시기 바랍니다 모든보기를 초기화 할 때. findViewById 메서드는 Activity의 내용을 설정하기 전에 호출하는 경우 항상 null (id가 무엇이든)을 반환합니다.

( 준비이 콘텐츠의 설정 super.onCreate(bundle)에 대한 호출이 그렇지 않으면 활동하지 않지만 후 그것을 을)

액티비티의 내용을 설정하기위한 가장 일반적인 방법은 Activity.onCreate() 방법 setContentView를 호출하는 것입니다

+0

이지만 function.so를 호출하고 싶습니다. –

+0

다른 활동의 기능에 액세스 할 수 없습니다. –

+0

당신의 기능을 어딘가에 두라 (Activity가 아닌 클래스에서), 또는 Activity 사이에서 의사 소통을하기 위해 Intent를 사용하거나, ... 많은 가능성이 있지만 확실히 자신 만의 생성자로 Activity를 생성하지 마십시오! – ben75

관련 문제