2017-09-20 1 views
-1

실행 시간에 업데이트해야하는 텍스트보기가 있습니다. 이 텍스트 뷰가 다음 XML에 의해 정의된다 :실행 시간 중에 Android 텍스트보기를 찾을 수 없음

<TextView 
android:id="@+id/agi_val" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="TextView" /> 

활동 코드에서, 나는이 같은이 (및 기타 TextViews)에 액세서 :

private TextView AGI; 
///< Some stuff 

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_abf__char_gen__basic_info); 

     abfToolsSaveData = (ABFToolsSaveData) getIntent().getParcelableExtra("SaveDataClass"); 

     this.AGI = (TextView) findViewById(R.id.agi_val); 
     ///< Some stuff 

     if (abfToolsSaveData != null) { 
      this.chargeData(true); 
     } else { 
      Log.d("INFO", "abfToolsSaveData is null"); 
     } 
    } 

와 다음, chargeData (부울)에서 :

public void chargeData(boolean firstTime){ 
     if(firstTime){ 
      MainCharacteristics mc = abfToolsSaveData.getCharacter().getMainCharacteristics(); ///< We get the main characteristics, auto-generated the first time 

      /** 
      * Set the Text Views with the default value 
      */ 
      if(AGI != null){ ///< I've done this to check if the text view is null or not 
       Log.d("INFO", String.valueOf(AGI)); 
       AGI.setText(mc.getAGI()); 
      } 
      else 
       Log.d("INFO","AGI IS NULL"); 
      ///< Some stuff 
     } 
    } 

것은은 "agi_val"텍스트 뷰가 발견되고 있다는이지만, 활동의 AGI의 텍스트 뷰는, 내가 이전에 저장 한 것을, 누구의 연결 자원 "agi_val"액세서 수 없습니다. 오류 로그는 다음과 같습니다.

///< This first line shows the value of the "agi_val" ID. As you can see, it's not null. 
    09-20 10:07:32.344 1266-1266/com.noeselmastersonlosdados.sliferdragon.penandpapercompanion D/INFO: android.support.v7.widget.AppCompatTextView{b670993 V.ED.... ......ID 0,0-0,0 #7f0d0077 app:id/agi_val} 
    09-20 10:07:32.344 1266-1266/com.noeselmastersonlosdados.sliferdragon.penandpapercompanion W/ResourceType: No package identifier when getting value for resource number 0x00000009 
    --------- beginning of crash 
    09-20 10:07:32.347 1266-1266/com.noeselmastersonlosdados.sliferdragon.penandpapercompanion E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.noeselmastersonlosdados.sliferdragon.penandpapercompanion, PID: 1266 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.noeselmastersonlosdados.sliferdragon.penandpapercompanion/com.noeselmastersonlosdados.sliferdragon.penandpapercompanion.ABF_CharGen_BasicInfo}: android.content.res.Resources$NotFoundException: String resource ID #0x9 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5254) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x9 
    at android.content.res.Resources.getText(Resources.java:299) 
    at android.widget.TextView.setText(TextView.java:4132) 
///< This line is the assigment of the text 
    at com.noeselmastersonlosdados.sliferdragon.penandpapercompanion.ABF_CharGen_BasicInfo.chargeData(ABF_CharGen_BasicInfo.java:73) 
    at com.noeselmastersonlosdados.sliferdragon.penandpapercompanion.ABF_CharGen_BasicInfo.onCreate(ABF_CharGen_BasicInfo.java:54) 
    at android.app.Activity.performCreate(Activity.java:5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
    at android.app.ActivityThread.access$800(ActivityThread.java:151)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)  
    at android.os.Handler.dispatchMessage(Handler.java:102)  
    at android.os.Looper.loop(Looper.java:135)  
    at android.app.ActivityThread.main(ActivityThread.java:5254)  
    at java.lang.reflect.Method.invoke(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:372)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)  

도대체 무슨 일이 벌어지고 있는지 알고 있습니다. 나는 이것을 해결하려고 2 일 동안 있었고 어떻게 (나는 인터넷에서 검색했지만 비슷한 것을 찾을 수는 없다) 모른다.

누군가가 R 클래스 ID를 묻는 경우 로그의 첫 번째 줄에 표시되는 것과 동일합니다.

+0

시도에 ** 깨끗한 **와 ** 다시 ** 프로젝트 –

+0

가 나는 거의 10 시간을,이 문제가 해결되지 않습니다 이것에 대한 –

답변

0

글쎄, 나는이 대답을 "Stack Overflow en Español"에서 물었습니다. 그 대답을 얻었습니다.

사실 mc.getAGI()이 int를 반환하므로 setText(int resourceId)의 재정의를 사용하면 id 값을 가진 R.string 리소스를 찾습니다.대답에

링크 : https://es.stackoverflow.com/a/103616/6568

0

setContentView()이 호출되면 올바른 레이아웃을 찾고 뷰가 해당 레이아웃에있는 경우 null보기를 얻지 못합니다. 잘못된 ID이if (!AGI.getText().toString.matches(""))

또는이

if(!TextUtils.isEmpty(AGI.getText().toString)) 

가의 insted

사용을 전달하여보기를 찾고 있다면

당신은 널을 얻을 것이다if(AGI != null)

+0

감사를 수행했지만, 그건 새로운 것을 아는 데 유용합니다! –

+0

대부분의 @SliferDragon이 내 ans를 받아 들일 수 있도록 도와 주시면 환영합니다 –

+0

코드가 귀하의 답변과 함께 작동하지 않습니다 ... –

0

XML에서 TextView 위젯 id를 찾으려면 this을 참조 할 필요가 없다고 생각합니다.

그래서, 간단하게이 작업을 수행 :

TextView AGI = (TextView) findViewById(R.id.agi_val); 

당신은 값이 비어 있거나 너무 isEmpty() 기능을 통해입니다 확인할 수 있습니다. abfToolsSaveData이 아닌 null 값이 AGI이 아닌지 확인해야합니다. abfToolsSaveData의 유형도 확인하십시오. integer 또는 double 인 경우 integer/double 값을 string으로 구문 분석해야합니다.

if(!abfToolsSaveData.isEmpty()){ 
    AGI.setText("Some Text"); 
    //AGI.setText(String.valueOf("some integer content")); 

}else { 

} 
관련 문제