Android 在片段和活动之间共享布局
我有一个包含GridView和按钮的主布局 在阅读之前请注意:我使用片段的原因是因为我同时在GridView中显示了很多图像,所以我设置了片段类来有效地处理它们,而不会影响性能 我希望处理GridView行为的片段与处理按钮行为的活动分开(我的主片段和活动都共享相同的布局) 当我尝试这样做时,应用程序加载,加载所有图像,按钮出现。 当我点击按钮(我已经为它设置了一个标签)时,控制台中没有显示我按下按钮的标签消息 然后,当我按下手机上的“后退”按钮时,GridView将消失,并且该按钮仅存在,然后单击该按钮后,标签消息将在控制台中显示该消息 我将如何着手解决这个问题,还有,我在这里所做的,这是一个好主意还是一个坏主意?提前谢谢 XML: 主要片段:Android 在片段和活动之间共享布局,android,android-fragments,Android,Android Fragments,我有一个包含GridView和按钮的主布局 在阅读之前请注意:我使用片段的原因是因为我同时在GridView中显示了很多图像,所以我设置了片段类来有效地处理它们,而不会影响性能 我希望处理GridView行为的片段与处理按钮行为的活动分开(我的主片段和活动都共享相同的布局) 当我尝试这样做时,应用程序加载,加载所有图像,按钮出现。 当我点击按钮(我已经为它设置了一个标签)时,控制台中没有显示我按下按钮的标签消息 然后,当我按下手机上的“后退”按钮时,GridView将消失,并且该按钮仅存在,然后
public class ImageGridActivity extends FragmentActivity {
private static final String TAG = "ImageGridActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
if (BuildConfig.DEBUG) {
Utils.enableStrictMode();
}
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new ImageGridFragment(), TAG);
ft.commit();
}
}
}
您可以在一些事件上启动ImageGridActivity,如单击按钮。为什么你需要两项活动?为什么不只是ImagerDactivity?您应该制作一个框架布局来代替GridView,并且应该将片段附加到该框架布局上。您的片段布局将具有GridView。在片段中,根据需要对Gridview进行操作。按钮的侦听器应处于活动状态。
public class MainActivity extends Activity {
public static String TAG = "Test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_grid_fragment);
startActivity(new Intent(this, ImageGridActivity.class));
Button SearchListButton = (Button) findViewById(R.id.button1);
SearchListButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "clicked");
}
});
}
}
public class ImageGridActivity extends FragmentActivity {
private static final String TAG = "ImageGridActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
if (BuildConfig.DEBUG) {
Utils.enableStrictMode();
}
super.onCreate(savedInstanceState);
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new ImageGridFragment(), TAG);
ft.commit();
}
}
}