gpt4 book ai didi

java - Android布局问题: Getting the Namespace Right

转载 作者:行者123 更新时间:2023-12-01 11:13:58 25 4
gpt4 key购买 nike

好的。我见过很多类似的问题,但可能我的问题太基本了(即愚蠢的 n00b 问题),以至于没有人费心去问。

我对 Android 编程还是很陌生,或者以“工业”能力使用 Java(即不适用于简单的 10 行类问题)。

我有一个带有嵌入式静态类的 Activity 类:

package com.example.android.effectivenavigation;



public class MainActivity extends FragmentActivity implements ActionBar.TabListener {



public static class NonSwipeableViewPager extends ViewPager {



}
}

这来自该网站的示例。我想做的,是将其简化为最基本的原子元素。

具体来说,我希望将整个示例放在主 Activity 文件中。

这是我的(非功能性)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 设置在单独的文件中并相当直接地引用它,它就可以正常工作。当它作为静态类嵌入到主 Activity 类中时,我遇到了问题。

我显然在 XML 中使用了错误的命名空间。

任何人都可以帮我找到要使用的正确命名空间吗?

谢谢!

最佳答案

尝试在主要 Activity 的 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 方法。此外,您还应该为该 fragment 拥有一个单独的布局 xml(在我的示例中名为 fragment_example)。该方法应该返回一个 View 对象,该对象会扩展 fragment 的布局。这是一个例子:

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 类来创建 fragment :

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;
}
}

最后在您的 Activity 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

我希望这能提供更多细节并为您提供更多帮助

关于java - Android布局问题: Getting the Namespace Right,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32052075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com