Android软件闪退:为什么代码在setContentView()之前调用findViewById()会导致闪退?

android软件闪退:为什么代码在setcontentview()之前调用findviewbyid()会导致闪退?

android软件闪退

一位android初学者在模拟器上运行代码时遇到闪退问题,以下是他提供的代码:

public class mainactivity extends appcompatactivity {
    final webview webview = findviewbyid(r.id.webview);
    // ...
}

问题:

问题出在代码中过早调用findviewbyid()函数。在调用setcontentview()设置布局之前,findviewbyid()无法找到任何视图。

解决方案:

将findviewbyid()调用移动到setcontentview()之后,如下所示:

public class MainActivity extends AppCompatActivity {
    WebView webView;
    // ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        this.webView = findViewById(R.id.WebView);
        // ...
    }
}

现在,setcontentview()将加载布局并渲染视图,然后findviewbyid()才能正确找到webview视图。这样就可以解决闪退问题。

以上就是Android软件闪退:为什么代码在setContentView()之前调用findViewById()会导致闪退?的详细内容,更多请关注其它相关文章!