从 MainActivity 访问 TextView

Accessing TextView from MainActivity

所以我使用 Android Studio 2.1.2 创建了一个 Navigation Drawer Activity,方法是执行文件 -> 新建 -> 项目 -> 导航抽屉 Activity。我有 4 个布局文件

  1. nav_header_main.xml
  2. content_main.xml
  3. app_bar_main.xml
  4. activity_main.xml

content.main.xml 有一个 ID 为 helloTextViewTextView(我手动设置了它)。 在 MainActivity 上,一个方法处理导航项选择事件。现在我的目标是改变content.main.xml的文本视图的文本,将文本设置为用户选择的内容。请注意以下代码块的注释--

@SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_camera) {
            // Handle the camera action
            // I want to change the content of helloTextView here
            // I.E setText("You Selected Camera!")
        } else if (id == R.id.nav_gallery) {

        } else if (id == R.id.nav_slideshow) {

        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

我该如何着手建立它?

((TextView) findViewById(R.id.helloTextView)).setText("You Selected Camera!"); 应该可以。

通常,您会声明一个变量,例如:TextView myTextView; 作为一个 class 范围的变量,然后在您的 onCreate()onCreateView() 中放置:

myTextView = (TextView) findViewById(R.id.helloTextView);(类似于您对 DrawerLayout 所做的)

然后,您可以输入:

myTextView.setText("You Selected Camera!");

然后在 Activity 中的任何其他地方,您可以只使用 myTextView 而不必每次都使用 findViewById()

不过现在,此答案最顶部的代码行对您有用。 :)