行。我在这些方面看到了很多问题,但我的问题可能是如此基本(即愚蠢的n00b问题),没有人费心去问。
我仍然对Android编程很新,或者在“工业”容量中使用Java(即不适用于简单的10行课堂问题)。
我有一个带有嵌入式静态类的活动类:
package com.example.android.effectivenavigation;
•
•
•
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
•
•
•
public static class NonSwipeableViewPager extends ViewPager {
•
•
•
}
}
这来自该网站的样本。我想要做的是将它减少到最基本的原子元素。
具体来说,我希望将整个示例放在主活动文件中。
这是我的(非功能性)XML:
<com.example.android.effectivenavigation.MainActivity.NonSwipeableViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
现在,问题在于当我在布局XML中指定ViewPager时,在解开NonSwipeableViewPager元素时会出现“ClassNotFoundException”。
如果我在单独的文件中设置NonSwipeableViewPager并直接引用它,它可以正常工作。它是作为静态类嵌入到我遇到的主要活动类中的时候。
我显然在XML中使用了错误的命名空间。
任何人都可以帮我找到正确使用的命名空间吗?
谢谢!
答案 0 :(得分:1)
尝试在主要活动的xml:
中添加类似内容<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.effectivenavigation.MainActivity.NonSwipeableViewPager"/>
希望这有帮助。
编辑:我还是新用户,我还没有使用我的答案应该有多广泛。所以这里有一个我做过的例子:
您可以在自定义类中扩展Fragment
并在其中使用onCreateView
方法。此外,对于此片段,您应该有一个单独的布局xml(在我的示例中名为fragment_example
)。该方法应返回一个View
对象,该对象会扩展片段的布局。这是一个例子:
public static class ExampleFragment extends Fragment {
static Button b;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_exmaple, container, false);
b = (Button) rootView.findViewById(R.id.button1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do something
}
});
return rootView;
}
}
这是相应的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".activity_name">
<Button
android:layout_width="227dp"
android:layout_height="40dp"
android:text="Search"
android:id="@+id/search"
android:layout_gravity="center_horizontal"
android:background="#80ffffff"
android:textColor="#ffff6b6b"/>
</LinearLayout>
您还需要一个FragmentPagerAdapter
类来创建片段:
public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {
public AppSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i) {
default:
return new ExampleFragment();
}
}
@Override
public int getCount() {
return 1;
}
}
最后在您的活动onCreate
方法中,你应该有类似的东西:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adapter that will return a fragment for each of the two primary sections
// of the app.
mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager, attaching the adapter and setting up a listener for when the
// user swipes between sections.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mAppSectionsPagerAdapter);
}
严重依据:http://developer.android.com/training/implementing-navigation/lateral.html
我希望这可以提供更多细节,并帮助您更多