【问题标题】:Change TextView value on Activity creation在 Activity 创建时更改 TextView 值
【发布时间】:2016-02-06 21:32:03
【问题描述】:

我想在创建 Activity 时更改 TextViews 值。

在 LoginActivity 上,我使用以下方式开始我的活动:

startActivity(new Intent(LoginActivity.this, MainActivity.class));

但我不知道在哪里放置更改我的 textviews 值的代码。

当我将它放在 onCreate 中时,我的应用程序就崩溃了...

我的 logcat 不工作,所以我看不到我的异常...

但是做的时候会崩溃

    TextView t = (TextView) findViewById(R.id.zanuka_username);
    t.setText("lllll");

onCreate

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView t = (TextView) findViewById(R.id.zanuka_username);
        t.setText("lllll");

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

       /** FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
        **/

        //ImageView profilePicture = (ImageView)findViewById(R.id.zanuka_profilepicture);
        //new ImageLoadTask("http://chat.keecode.net/account/picture/1", profilePicture).execute();

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);
    }

【问题讨论】:

  • 您需要在 MainActivity 中处理 TextViews 吗?万一请发布 MainActivity 代码给您带来了问题,以便更容易解释什么是错误的以及如何修复。
  • 您的 t 对象为 null,换句话说,请确保您在 activity_main.xml 中声明了一个 id = zanuka_username 的 TextView
  • @Melquiades 好吧,我想编辑抽屉式导航...然后把这个更改放在哪里?
  • 什么意思?您将内容设置为 setContentView(R.layout.activity_main),因此 findViewById(R.id.zanuka_username) 将在 activity_main.xml 中查找 id="zanuka_username" 的 TextView(如果您使用了“include”,则为其他布局文件) );也就是说,放在activity_main.xml中

标签: android


【解决方案1】:

你得到了这个异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

它告诉你你的 TextView t 是 NULL。原因是您的 activity_main.xml 中缺少 id="zanuka_username" 的 TextView。

【讨论】:

  • 那么,在哪里编辑导航抽屉?它没有自己的类,但我可以在主活动中的事件上编辑它,但不能在 onCreate 方法中编辑它。那么在哪里做呢?
  • 那么你的 zanuka_username TextView 呢?不知道你的布局结构,这是一个猜测工作,但看看它是如何使用默认导航抽屉布局项目的结构(只需使用 Android Studio 创建一个)。您会看到抽屉的布局位于 nav_header_main.xml 和 activity_main_drawer.xml(在菜单文件夹中)(使用 AS 2.0 Beta2)
【解决方案2】:
TextView mTextView;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        mTextView = (TextView)findViewById(R.id.your_text_view);
        mTextView.setText("Main activity created");
    }

【讨论】:

    【解决方案3】:

    请发布您的 MainActivity oncreate 代码和您得到的异常

    这应该可以工作

    TextView tv = (TextView)findViewById(R.id.tv);
    tv.setText("Hello World");
    

    在你的 onCreate 中。

    【讨论】:

    • 好吧,我的 logcat 不工作......我看不到我的异常,但我会尝试在手机上使用 logcat
    • 好的,我设法让它工作:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)'
    • 请发布您完整的致命异常日志和activity_main.xml布局文件内容
    • activity_main.xml 中没有 id 为 zanuka_username 的 tex tview。这就是为什么你得到空指针异常。你需要在布局中有你正在膨胀的元素。
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多