【问题标题】:No PlaceholderFragment class in MainActivity.javaMainActivity.java 中没有 PlaceholderFragment 类
【发布时间】:2015-06-30 00:26:47
【问题描述】:

我正在尝试通过 udacity 的 google 的 android 编程课程 (android studio) 来学习 android 编程。 问题是我的 MainActivity.java 中没有“PlaceholderFragment”类。 我在这个文件中只有 MainActivity 类。 谁能帮帮我?

编辑: 我的 MainActivity.java 是:

public class MainActivity extends ActionBarActivity {

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


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

【问题讨论】:

  • 请张贴代码。这是我们可以帮助您的唯一方法,它显示了努力。我注意到你已经成为会员很长时间了。请阅读教程@stackoverflow.com/tour。您通过阅读获得的代表点数很少。
  • 你应该明确你想要做什么。如果你只需要一个 Fragemt,有多种简单的方法可以做到这一点。有可能是 Android Studio 过去自动添加了一个名为 PlaceholderFragment 的 Fragment。
  • 它存在于MainActivityFragment.java,名称存在于您的main_activity.xml

标签: android android-fragments android-studio


【解决方案1】:

我在使用 Udacity 课程“开发 Android 应用程序:Android 基础”时遇到了同样的问题。 Udacity 视频已经超过 9 个月,并且由于 android studios 一直在更新,较新版本的 android studio 不再为片段提供内部类。相反,android studio 会生成一个包含片段的单独类。但是,没问题。

转到第 1 课的选项卡:“使用 Sunshine Github 存储库”并打开链接:Udacity Sunshine 存储库

下载分支:“1.01_hello_world”并将内容导入android studios。您将在 MainActivity.java 中拥有“PlaceholderFragment”类,然后您可以在 Udacity 继续课程

【讨论】:

    【解决方案2】:

    你需要阅读一个好的网页。我推荐阅读和学习来自 Google 的 @Fragments 的代码。 网页中的代码 sn-ps:

    public static class ExampleFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.example_fragment, container, false);
        }
    }
    
    ExampleFragment fragment = new ExampleFragment();
    fragmentTransaction.add(R.id.fragment_container, fragment);
    fragmentTransaction.commit();
    

    注意:ExampleFragment 可能是您的“PlaceholderFragment”。

    【讨论】:

      【解决方案3】:

      只需在 MainActivity.java 文件中删除你的包名之后的代码,然后用下面的这个替换它。

      import android.app.Fragment;
      import android.os.Bundle;
      import android.support.design.widget.FloatingActionButton;
      import android.support.design.widget.Snackbar;
      import android.support.v7.app.AppCompatActivity;
      import android.support.v7.widget.Toolbar;
      import android.view.LayoutInflater;
      import android.view.View;
      import android.view.Menu;
      import android.view.MenuItem;
      import android.view.ViewGroup;
      
      public class MainActivity extends AppCompatActivity {
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          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();
              }
          });
      }
      
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_main, menu);
          return true;
      }
      
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // Handle action bar item clicks here. The action bar will
          // automatically handle clicks on the Home/Up button, so long
          // as you specify a parent activity in AndroidManifest.xml.
          int id = item.getItemId();
      
          //noinspection SimplifiableIfStatement
          if (id == R.id.action_settings) {
              return true;
          }
      
          return super.onOptionsItemSelected(item);
      }
      public static class PlaceholderFragment extends Fragment {
      
          public PlaceholderFragment() {
          }
      
          @Override
          public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                   Bundle savedInstanceState) {
              View rootView = inflater.inflate(R.layout.fragment_main, container, false);
              return rootView;
              }
          }
      }
      

      【讨论】:

      • 请考虑简要解释为什么这可以解决问题。
      【解决方案4】:

      在我将“ForecastFragment”类放入它自己的文件之后,我遇到了同样的问题。

      对我来说解决问题的是构建 - 清洁项目。这样做之后,它构建得很好。

      也许有一些旧的构建文件在寻找 placeholderFragment?

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,但我试图弄清楚如何使用新结构。我将代码放在 MainActivityFragment.java 的方法 onCreateView 中,因为这是新方法。它对我有用。 看看我的最终代码:

        public class MainActivityFragment extends Fragment {
        
            private ArrayAdapter<String> mForecastAdapter;
        
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
                View rootView = inflater.inflate(R.layout.fragment_main, container);
        
                ArrayList<String> weekForecast = new ArrayList<>();
        
                weekForecast.add("Today - Sunny - 88/63");
                weekForecast.add("Tomorrow - Foggy - 70/40");
                weekForecast.add("Weds - Cloudy - 72/63");
                weekForecast.add("Thurs - Asteroids - 75/65");
                weekForecast.add("Fri - Heavy Rain - 65/56");
                weekForecast.add("Sat - HELP TRAPPED IN WEATHERSTATION - 60/51");
                weekForecast.add("Sun - Sunny - 80/68");
        
                mForecastAdapter = new ArrayAdapter<>(getActivity(),
                        R.layout.list_item_forecast, R.id.list_item_forecast_textview, weekForecast);
        
                ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
                listView.setAdapter(mForecastAdapter);
        
                //return inflater.inflate(R.layout.fragment_main, container, false);
                return rootView;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2013-02-17
          • 2012-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-18
          • 1970-01-01
          相关资源
          最近更新 更多