簡體   English   中英

我被困在 Android Studio

[英]Im stuck in Android Studio

我正在創建一個簡單的計算器,我使用了 2 個活動,第一個是登錄表單,第二個是計算器。 登錄表單運行良好,但是當我切換活動時出現問題。 我不明白這個錯誤,它超級長而且復雜。 我在谷歌上搜索了一段時間,但似乎找不到解決方案。

這是計算器代碼:

public class CalculatorActivity extends AppCompatActivity {



public void onCreate(Bundle savedInstanceState){
    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calculator);
    
}

private TextView field = (TextView)findViewById(R.id.mainField2);
private String text = field.getText().toString();

public void numbers(View v){
    
    Button numBtn = (Button)v;
    String btnTxt = numBtn.getText().toString();
    
    System.out.println(btnTxt);
    
    
}

}

這是錯誤

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mainpackage.apptest, PID: 3971
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mainpackage.apptest/com.mainpackage.apptest.CalculatorActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3365)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
    at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:173)
    at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:174)
    at android.content.Context.obtainStyledAttributes(Context.java:744)
    at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:842)
    at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:809)
    at androidx.appcompat.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:633)
    at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:259)
    at com.mainpackage.apptest.CalculatorActivity.<init>(CalculatorActivity.java:23)
    at java.lang.Class.newInstance(Native Method)
    at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
    at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3353)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:223) 
    at android.app.ActivityThread.main(ActivityThread.java:7656) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法“android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()”

這意味着您正在嘗試類似的方法: null.aMethod() 您正在對null進行方法調用。

從您的代碼來看,問題來自private TextView field = (TextView)findViewById(R.id.mainField2); 在調用onCreate ()之前首先執行字段聲明。

你可以像這樣重寫你的代碼

public class CalculatorActivity extends AppCompatActivity {

private TextView field = null;
private String text = null;


public void onCreate(Bundle savedInstanceState){
    
    super.onCreate(savedInstanceState);
    setContentView(R.layout.calculator);
    
    field = (TextView)findViewById(R.id.mainField2);
    text = field.getText().toString();
}


public void numbers(View v){
    Button numBtn = (Button)v;
    String btnTxt = numBtn.getText().toString();
    
    System.out.println(btnTxt);
}```





暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM