我正在开发一个小型Google地图应用,让用户可以找到靠近它们的地方,我想添加一些功能,让用户可以将地点添加到收藏夹列表中,到目前为止,我已经创建了可以执行此功能的类。
我的主要活动是我的主页,其中打开了其他活动,代码如下:
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;
public class MainActivity extends AppCompatActivity {
ImageButton btnNearBy;
ImageButton btnFavourites;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnNearBy = (ImageButton) findViewById(R.id.btnNearby);
btnNearBy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mapIntent = new Intent(getBaseContext(), MapsActivity.class);
startActivity(mapIntent);
}
});
btnFavourites = (ImageButton) findViewById(R.id.btnFavourites);
btnFavourites.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager = MainActivity.this.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
FavouriteListFragment fragment = new FavouriteListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment); //ERROR ON THIS LINE
fragmentTransaction.commit();
}
});
}
}
我已经创建了一个按钮,可以打开包含收藏列表的片段,我的片段声明如下:
public class FavouriteListFragment extends Fragment { ... }
我有点不确定如何在单击按钮时从MainActivity打开片段。 有任何想法吗? 谢谢!
答案 0 :(得分:3)
由于您使用的是android.support.v4.app.Fragment
,因此在导入正确的版本时存在很多混淆。试试这样:
android.support.v4.app.FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
FavouriteListFragment fragment = new FavouriteListFragment();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
fragment_container
FrameLayout
activity_main
内的<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
。
table( count.fields("C:/Users/username/Desktop/data.csv",
comment.char="", quote="", sep="," ))
答案 1 :(得分:3)
有两种显示片段的方式:
1-首先,您需要在代码中定义一个片段容器,如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="do something"
android:onClick="openFragment" />
<FrameLayout
android:id="@+id/fragment_container"
android:layout_height="wrap_content"
android:layout_width="match_content" />
</LinearLayout>
然后您需要在活动中创建一个名为openFragment
的函数,并在openFragment
中使用以下代码:
getSupportFragmentManager().beginTransaction().add(R.id_fragment_container,new FavouriteListFragment()).commit();
2-您可以在活动xml文件中定义片段,如:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_fragment"
android:name="com.example.android.something.FavouriteListFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.android.something.FavouriteListFragment"
tools:layout="@android:layout/fragment_layout" />
第一个称为动态片段创建,第二个称为静态。第一个你有更多的自由,但如果你的片段在整个活动中没有变化,那么使用第二个片段就更简单了