gpt4 book ai didi

java - 在android Activity 中的2个布局之间切换

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:48:25 25 4
gpt4 key购买 nike

我有 2 个不同的布局文件,我想用它们来修改相同的数据,我要切换到我的“编辑 View ”布局,它允许用户修改图形数据,然后允许他们切换回显示详细图表的“详细 View ”(使用 androidplot 库)。

我的问题是,当切换回我的“编辑 View ”时,我的图形线条消失了,只有轴绘制(因此布局切换和 onDraw() 正在为我的图形 View 调用)。所有内容都存储在同一个 Activity 中,所以我不明白为什么这不起作用?

这些线存储在 Graph View 对象本身中,它应该是持久的,因为它是我 Activity 中的一个存储变量。

我使用这两种方法在单击按钮时切换布局文件。

public class GraphLibActivity extends Activity {

private Graph graph;

private boolean editView;

private static TextView coordTextView;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
editView = true;

setContentView(R.layout.graphlib);



graph = (Graph) findViewById(R.id.graph);

coordTextView = (TextView)findViewById(R.id.currentCoords);


(lots of calculations)
graph.addLine(gelHistogramPoints, linePaint);



graph.invalidate();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
if(editView == true){
inflater.inflate(R.menu.activity_menu, menu);
}else{
inflater.inflate(R.menu.detailed_view_menu, menu);
}
return true;
}

public boolean onPrepareOptionsMenu(Menu menu){
menu.clear();
MenuInflater inflater = getMenuInflater();
if(editView == true){
inflater.inflate(R.menu.activity_menu, menu);
}else{
inflater.inflate(R.menu.detailed_view_menu, menu);
}
graph.invalidate();
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

// Handle item selection
switch (item.getItemId()) {


case R.id.detailed_view:
editView = false;
setContentView(R.layout.imagegraph);
return true;


case R.id.edit_view:
editView = true;
setContentView(R.layout.editgraph);
return true;

default:
return super.onOptionsItemSelected(item);
}

}




}

最佳答案

每次调用 setContentView 时,您都会膨胀布局,因此必须重新设置数据。你在这样做吗?

无论如何,我建议将两个布局合并到一个文件中。然后使用 ViewFlipper从一种布局更改为另一种布局。这看起来类似于:

图表.xml:

<ViewFlipper android:id="@+id/viewFlipper">
<LinearLayout>
// Here would go the content of R.layout.imagegraph
</LinearLayout>
<LinearLayout>
// Here would go the content of R.layout.editgraph
</LinearLayout>
</ViewFlipper>

然后您只需调用 showNext() 即可在您的 Activity 中切换布局:

ViewFlipper vf = (ViewFlipper) findViewById( R.id.viewFlipper );
vf.showNext();

希望对您有所帮助。

关于java - 在android Activity 中的2个布局之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7017428/

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