3

テキストビューを作成してアプリケーションの XML コンポーネントにリンクしようとすると、アプリケーションがクラッシュするようです。私が使用しているコードは次のとおりです。

public class WorkoutAdvice extends Activity {
TextView adviceshow;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    String[] advice = getResources().getStringArray(R.array.races_array);
    Random rand = new Random(); 
    int ad = rand.nextInt(5);
    String gen = advice[ad];
    adviceshow = (TextView)findViewById(R.id.advice);
    adviceshow.setText(gen);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.advice);       

}
}

私のアプリケーションが閉じたときのlogcatは

05-26 01:43:23.018: E/AndroidRuntime(363): 致命的な例外: メイン 05-26 01:43:23.018: E/AndroidRuntime(363): java.lang.RuntimeException: アクティビティ ComponentInfo{com を開始できません。 b00348312.workout/com.b00348312.workout.WorkoutAdvice}: java.lang.NullPointerException 05-26 01:43:23.018: E/AndroidRuntime(363): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 05 -26 01:43:23.018: E/AndroidRuntime(363): android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 05-26 01:43:23.018: E/AndroidRuntime(363): android.app で.ActivityThread.access$2300(ActivityThread.java:125) 05-26 01:43:23.018: E/AndroidRuntime(363): android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 05-26 01: 43:23.018: E/AndroidRuntime(363): android.os.Handler.dispatchMessage(Handler.java:99) 05-26 01:43:23.018: E/AndroidRuntime(363): android.os.Looper.loop(Looper.java:123) 05-26 01:43:23.018: E/AndroidRuntime(363): android.app.ActivityThread.main で(ActivityThread.java:4627) 05-26 01:43:23.018: E/AndroidRuntime(363): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) 05-26 01:43:23.018: E/AndroidRuntime( 363): java.lang.reflect.Method.invoke(Method.java:521) 05-26 01:43:23.018: E/AndroidRuntime(363): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run で(ZygoteInit.java:868) 05-26 01:43:23.018: E/AndroidRuntime(363): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-26 01:43:23.018 : E/AndroidRuntime(363): dalvik.system.NativeStart.main(Native Method) 05-26 01:43:23.018: E/AndroidRuntime(363): 原因: java.lang.NullPointerException 05-26 01:43 :23.018: E/AndroidRuntime(363): com.b00348312.workout.WorkoutAdvice.onCreate(WorkoutAdvice.java:22) 05-26 01:43:23.018: E/AndroidRuntime(363): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-26 01: 43:23.018: E/AndroidRuntime(363): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 05-26 01:43:23.018: E/AndroidRuntime(363): ... 11 もっと見る

アプリケーションは、アプリケーションの他の部分で機能する findbyID 行を処理するステートメントなしで機能します

4

4 に答える 4

2

を呼び出して実際にアクティビティコンテンツを設定するまでsetContentView、ビューは見つかりません。に電話したらsetContentView、を見つけようとするかもしれませんTextView。この呼び出しの前に、ActivityはどのXMLレイアウトにバインドされるか(存在する場合)をまったく知らないことに注意してください。

于 2012-05-26T01:50:16.730 に答える
1

findViewByIdを使用する前に、ContentViewを設定する必要があると思います。

于 2012-05-26T01:49:24.627 に答える
1

置く

setContentView(R.layout.advice);

の前に

adviceshow = (TextView)findViewById(R.id.advice);
于 2012-05-26T01:49:06.327 に答える