【问题标题】:How To Use Both AppCompatActivity and Activity Classes in OncreateMethod [duplicate]如何在 OncreateMethod 中同时使用 AppCompatActivity 和 Activity 类 [重复]
【发布时间】:2020-08-01 12:57:10
【问题描述】:

我建立了语言设置(使用活动类)和工具栏设置(使用 appcompatactiviy)。我希望将它们设置为 oncreatemethod。但我不能扩展两个类是活动和 appcompatactivity。我将它们分别扩展到两个类(工具栏和 SetupActivity)。我从工具栏类调用工具栏设置来设置工具栏,但编译器给了我一个错误。我怎样才能做到这一点而不会出错。我会犯错误,因为我是课堂主题的新手。代码:

class toolbar extends AppCompatActivity{
@Override
public void setSupportActionBar(@Nullable Toolbar toolbar) {
    super.setSupportActionBar(toolbar);
}

@Nullable
@Override
public ActionBar getSupportActionBar() {
    return super.getSupportActionBar();
}
}

public class SetupActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Locale locale;
    if(getLocale()==null){
        locale = Locale.getDefault();
    }else{
        locale = new Locale(getLocale());
    }

    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config,
            getBaseContext().getResources().getDisplayMetrics());

    setContentView(R.layout.activity_setup);

    Toolbar setupToolBar= findViewById(R.id.setupToolbar);
    toolbar a = new toolbar();
    a.setSupportActionBar(setupToolBar);
    a.getSupportActionBar().setTitle(R.string.action_setting_text);
 }

  public String getLocale(){
    SharedPreferences prefs= getSharedPreferences("Settings", 
 Activity.MODE_PRIVATE);
    String language= prefs.getString("My_Lang", "");
    return language;
}

错误: java.lang.RuntimeException:无法启动活动 ComponentInfo{com.tower935.blog/com.tower935.blog.SetupActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'android.content.pm.ApplicationInfo android.content. Context.getApplicationInfo()' 在空对象引用上。请帮我解决这个问题。谢谢。

【问题讨论】:

    标签: java android class extend appcompatactivity


    【解决方案1】:

    您可能会收到 NPException,因为某些组件尚未初始化。

    尝试设置 setContentView(R.layout.activity_setup);

    就在 super.onCreate(savedInstanceState);

    之后

    像这样:

    @override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setup);
    
        // Rest of the code goes here
    }
    

    【讨论】:

    • 我已经设置了setContentView,它必须在设置语言的locale之后。再次控制我的帖子,您将看到 setContentView。
    猜你喜欢
    • 2016-06-04
    • 2015-09-26
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多