मेरे पास 2 अलग-अलग लेआउट फ़ाइलें हैं जिन्हें मैं एक ही डेटा को संशोधित करने के लिए उपयोग करना चाहता हूं, मैं "संपादन दृश्य" के लिए अपने लेआउट पर स्विच करना चाहता था जो उपयोगकर्ता को ग्राफ डेटा को संशोधित करने की अनुमति देता है और फिर उन्हें "विस्तृत दृश्य" पर वापस जाने की अनुमति दें जो एक विस्तृत ग्राफ प्रदर्शित करता है (androidplot लाइब्रेरी का उपयोग करके)।एंड्रॉइड गतिविधि में 2 लेआउट के बीच स्विचिंग
मेरी समस्या यह है कि, मेरे "संपादित दृश्य" पर वापस स्विच करते समय मेरी ग्राफ़ेड लाइनें चली जाती हैं और केवल धुरी ड्रॉ होती हैं (इसलिए लेआउट स्विच और ऑनड्रा() को मेरे ग्राफ़ व्यू के लिए बुलाया जा रहा है)। सब कुछ एक ही गतिविधि में संग्रहीत किया जाता है, इसलिए मुझे समझ में नहीं आता कि यह क्यों काम नहीं कर रहा है?
रेखाएं ग्राफ़ व्यू ऑब्जेक्ट के भीतर ही संग्रहीत की जाती हैं जो लगातार चलनी चाहिए क्योंकि यह मेरी गतिविधि में एक संग्रहित चर है।
मैं बटन क्लिक पर लेआउट फ़ाइलों को स्विच करने के लिए इन दो विधियों का उपयोग करता हूं।
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);
}
}
}
धन्यवाद, यह बहुत अच्छा काम करता है। –
मैं अनुमान लगाए बिना विशेष दृश्य दिखाना चाहता हूं कि आप 'अगली' या 'पहले' दृश्य उपयोग पर हैं: 'vf.setDisplayedChild (vf.indexOfChild (vfChildView))' – derenio
आपके उदाहरण में, क्या आपको अभी भी रीसेट करना है सभी डेटा? यदि दोनों लेआउट में टेक्स्ट एडिट है, और मैं दो लेआउट से जानकारी मर्ज करना चाहता हूं, और इसे किसी तीसरे लेआउट में टेक्स्ट व्यू में रखना चाहता हूं, तो मैं यह कैसे करूँगा? –