0

这是原始代码

我在 src root 中创建了一个testing包,结束于SectionListActivityExtended

Is 只是一个普通的别名,但在不同的包中:

package testing;

import pl.polidea.sectionedlist.SectionListActivity;

public class SectionListActivityExtended extends SectionListActivity{

}

修改了 AndroidManifest.xml 部分:

   <activity
        android:name="testing.SectionListActivityExtended"
        android:label="@string/app_name"
        android:theme="@style/SectionListViewTheme" >

并修改了 SectionListActivity:

@Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        arrayAdapter = new StandardArrayAdapter(this, R.id.example_text_view, exampleArray);
        sectionAdapter = new SectionListAdapter(getLayoutInflater(), arrayAdapter);
        String className = SectionListActivity.class.getPackage().getName();//className: pl.polidea.sectionedlist
        System.out.println("className: "+className);//className: pl.polidea.sectionedlist
        listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", className));
        listView.setAdapter(sectionAdapter);
    }

经过测试,正在工作,它用类名标签写出包名,现在不重要。

我已经创建了我的工作应用程序(在 NDA 下有很多样式和定义)我已经将带有所需文件的源代码复制到我的项目中,希望我能开始工作。修改了SectionListActivity从扩展类调用的and,类似上面:不同的根包。

    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        arrayAdapter = new StandardArrayAdapter(this, R.id.example_text_view, exampleArray);
        sectionAdapter = new SectionListAdapter(getLayoutInflater(), arrayAdapter);

//      FrameLayout frameLayout = (FrameLayout) findViewById(R.id.listView);
//      if (frameLayout == null) {
//          Log.e("tag", "got frameLayout");
//      } else {
//
//          Log.e("tag", "frameLayout is NULL");
//      }

        String packageName = SectionListActivity.class.getPackage().getName();//pl.polidea.sectionedlist
        System.out.println("packageName: " + packageName);
        listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", packageName));
        if (listView != null) {
            listView.setAdapter(sectionAdapter);
        } else {
            Log.e(packageName, "Can't load section_list_view ");
        }
    }

两者frameLayoutlistView为空。

从其他帖子来看,主要原因是因为他们没有将 attrs 传递给 super,但是这部分代码保持不变:

public SectionListView(final Context context, final AttributeSet attrs) {
    super(context, attrs);
    commonInitialisation();
}

也许在造型上它没有合并一些东西,但不知道如何追踪,或者我错过了一些东西并且还不知道。

有任何想法吗?

4

1 回答 1

0

这样做

listView = (SectionListView) findViewById(getResources().getIdentifier("section_list_view", "id", getPackageName()));
于 2013-09-27T10:42:56.517 回答