我在eclipse中使用navigation-drawer
模板来做一个简单的Android应用程序。
我有片段问题。
我在清单中声明了一个名为PresenceLog Fragment的片段,但是当我在MainActivity
中调用它时,日志仍然说明了
03-23 13:54:50.817: E/AndroidRuntime(16750): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.singtel.ricecooker/com.singtel.ricecooker.PresenceLogFragment}; have you declared this activity in your AndroidManifest.xml?
这是我的清单
这是我的片段类
public class PresenceLogFragment extends Fragment{
private TextView myText = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.presence_log, null);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
ArrayList<String> userList = null;
RiceServerRequest newRequest = new RiceServerRequest();
//newRequest.getRequestInfo(this);
}
public void updateUserList(ArrayList<String> userList){
LinearLayout lView = (LinearLayout) getView().findViewById (R.layout.presence_log);
//LinearLayout ll = (LinearLayout)fragment.getView().findViewById(R.id.commentFragmentLayout);
for (int i = 0; i < userList.size();i++){
myText = new TextView(getActivity());
myText.setText(userList.get(i));
lView.addView(myText);
}
//setContentView(lView);
}
这是我的MainActivity
private void launchPresenceLog(){
Intent intent = new Intent(this,PresenceLogFragment.class);
startActivity(intent);
}
如果您知道我的代码有什么问题,那将会很棒。此外,由于我是Android编程的新手,如果您可以推荐一些在线课程,我将不胜感激。
答案 0 :(得分:2)
您已经创建了一个片段,因此无法像活动一样调用它。 您需要使用Fragment替换容器视图,正确使用FrameLayout。
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new PresenceLogFragment())
.commit();
答案 1 :(得分:1)
您无法通过Intent加载片段。您必须以这种方式使用片段管理器来执行此操作:
Fragment fragment = new PresenceLogFragment(MainActivity.this);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction ft = fragmentManager.beginTransaction();
ft.replace(R.id.yourFragmentContainer, fragment).commit();
答案 2 :(得分:0)
have you declared this activity in your AndroidManifest.xml?
查看您的清单,看看您是否有<activity>
元素已注册您的活动。如果没有,请添加一个。
看看这里:http://developer.android.com/guide/topics/manifest/activity-element.html
答案 3 :(得分:0)
答案 4 :(得分:0)
请打开清单文件并声明如下:
<activity
android:name=".MainActivity" //your activity name
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果这是你的lauch活动,那么这样做,否则这样做
<activity
android:name=".MainActivity"//your activity name
android:label="@string/app_name" >
</activity>
键入扩展Activity而不是Fargment的java文件的名称。表示从该Activity文件创建的Fragment。
答案 5 :(得分:0)
<activity
android:name="com.singtel.ricecooker.PresenceLogFragment"
android:label="@string/app_name" >
</activity>
如果 com.singtel.ricecooker.PresenceLogFragment 代表一个活动,如果它是一个片段,那么在你的清单文件中添加它,那么你做错了。在第二种情况下使用下面的代码,
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, new PresenceLogFragment())
.commit();
答案 6 :(得分:0)