내 앱에서 AndroidAnnotations를 사용하고, 인 텐트에 추가 항목을 입력하고 AndroidAnnotations를 사용하는 활동을 시작하려고하면 항상 런타임 오류가 발생합니다. AndroidAnnotations 사용을 중지하면 모든 것이 잘 작동합니다.
다음은 내 활동을 시작하는 코드입니다.
public class TimeAndDateShower extends Activity {
//some code
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.time_and_date_shower);
//some code
setButtonListener();
}
public void setButtonListener()
{
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(TimeAndDateShower.this, DateChooser_.class);
intent.putExtra("SSID", network);
startActivity(intent);
TimeAndDateShower.this.finish();
}
});
}
}
DateChooser.java는 다음과 같습니다.
@EActivity(R.layout.date_chooser)
public class DateChooser extends Activity {
public String network;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.date_chooser);
setNetworkName();
//some code
}
public void setNetworkName()
{
TextView textView = (TextView)findViewById(R.id.textView4);
network = this.getIntent().getStringExtra("SSID");//using an extra
textView.setText(network);
}
}
AndroidManifest.xml에서 다음과 같이 DateChooser 활동을 선언합니다.
name="com.componentix.imwizard.DateChooser_" android:screenOrientation="landscape"> </activity>
그리고 여기에 내 런타임 오류 로그가 있습니다.
12-17 11:51:32.267: E/AndroidRuntime(3234): FATAL EXCEPTION: main
12-17 11:51:32.267: E/AndroidRuntime(3234): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.componentix.imwizard/com.componentix.imwizard.DateChooser_}: java.lang.NullPointerException
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.os.Handler.dispatchMessage(Handler.java:99)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.os.Looper.loop(Looper.java:137)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread.main(ActivityThread.java:4745)
12-17 11:51:32.267: E/AndroidRuntime(3234): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 11:51:32.267: E/AndroidRuntime(3234): at java.lang.reflect.Method.invoke(Method.java:511)
12-17 11:51:32.267: E/AndroidRuntime(3234): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-17 11:51:32.267: E/AndroidRuntime(3234): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-17 11:51:32.267: E/AndroidRuntime(3234): at dalvik.system.NativeStart.main(Native Method)
12-17 11:51:32.267: E/AndroidRuntime(3234): Caused by: java.lang.NullPointerException
12-17 11:51:32.267: E/AndroidRuntime(3234): at com.componentix.imwizard.DateChooser.setNetworkName(DateChooser.java:30)
12-17 11:51:32.267: E/AndroidRuntime(3234): at com.componentix.imwizard.DateChooser.onCreate(DateChooser.java:22)
12-17 11:51:32.267: E/AndroidRuntime(3234): at com.componentix.imwizard.DateChooser_.onCreate(DateChooser_.java:24)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.Activity.performCreate(Activity.java:5008)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
12-17 11:51:32.267: E/AndroidRuntime(3234): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
12-17 11:51:32.267: E/AndroidRuntime(3234): ... 11 more
나는 당신의 NPE가 textView에 있고 그것은 매우 정상적이라고 생각합니다 : 레이아웃 삽입은 원래 oncreate()
메서드 이후에 생성 된 클래스에서 수행됩니다 . 또한 AA가 추가 및 뷰를 주입하도록해야합니다. 다음과 같이 수업을 업데이트하십시오.
@EActivity(R.layout.date_chooser)
public class DateChooser extends Activity {
@Extra("SSID")
String network;
@ViewById(R.id.textView4)
TextView textView;
@AfterViews
void init() {
textView.setText(network);
//some code
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다