में "गैर-स्थैतिक विधि के लिए स्थिर संदर्भ नहीं बना सकता" मुझे अपने एंड्रॉइड प्रोग्राम में पुरानी "गैर-स्थैतिक विधि का स्थिर संदर्भ नहीं दे सकता" त्रुटि के साथ कुछ समस्याएं हैं। मैं एक रेत गिरने वाला गेम (पाउडर गेम के समान) बना रहा हूं और मैंने ब्रश आकार (जो ठीक काम करता है) के लिए स्लाइडर के साथ स्क्रीन के निचले हिस्से में एक नियंत्रण बार बनाने के लिए नियंत्रण नामक एक वर्ग बनाया है और एक पॉप अप करने के लिए एक बटन उपयोगकर्ताओं को चयनित तत्व चुनने की अनुमति देने के लिए संवाद। हालांकि, जब मैं अपने कोड से DemoActivity.ShowDialog (2) को कॉल करता हूं, तो यह गैर स्थैतिक त्रुटि के स्थिर संदर्भ देता है (डेमोएक्टिविटी मेरे आवेदन की मुख्य गतिविधि है)। मैंने इसे गतिविधि.शोडायलॉग (2) में बदलने की भी कोशिश की, लेकिन मुझे बिल्कुल वही त्रुटि मिली! कृपया मदद करें, मैं क्या गलत कर रहा हूँ? यहाँ पहले से मेरी कोड और धन्यवाद है:एंड्रॉइड
package sand.falling.opengl;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.SeekBar;
public class Control extends LinearLayout
{
private ImageButton control_button;
private SeekBar brush_size_slider;
final CharSequence[] elementslist = {"Sand", "Water", "Plant", "Wall", "Fire", "Ice", "Generator", "Oil", "Magma", "Stone", "C4"};
public Control(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
protected void onFinishInflate()
{
control_button = (ImageButton) findViewById(R.id.element_picker_button);
brush_size_slider = (SeekBar) findViewById(R.id.brush_size_slider);
control_button.setOnClickListener
(
new OnClickListener()
{
public void onClick(View v)
{
//THIS DOESN'T WORK!!!!
DemoActivity.showDialog(2); //Run the element picker dialog
}
}
);
control_button.setImageResource(R.drawable.palette);
brush_size_slider.setOnSeekBarChangeListener
(
new SeekBar.OnSeekBarChangeListener()
{
public void onProgressChanged(SeekBar seekbar, int progress, boolean fromTouch)
{
int p = 32 * progress/100;
DemoActivity.setBrushSize(p);
Log.v("DemoActivity", "size:" + p);
}
public void onStartTrackingTouch(SeekBar seekbar) {}
public void onStopTrackingTouch(SeekBar seekbar) {}
}
);
brush_size_slider.setProgress((int)400/32);
}
}
संपादित करें:
public class Control extends LinearLayout
{
private DemoActivity activity;
...
public void setActivity(DemoActivity act)
{
activity = act;
}
...
//Set a click listener for the button which should pop up element picker dialog when clicked
control_button.setOnClickListener
(
new OnClickListener()
{
public void onClick(View v)
{
activity.showDialog(2); //Run the element picker dialog
}
}
);
}
और फिर DemoActivity.java की मेरी onResume अनुभाग से control.setActivity(this);
बुला: मैं अपने Control.java कोड के लिए निम्न जोड़कर तय ! उम्मीद है कि यह आपके जैसे ही मुद्दों के साथ मदद करता है !!
आह, मैं मैं समझ गया लगता है। मैं डेमोएक्टविटी क्लास के विशिष्ट उदाहरण का संदर्भ प्राप्त करने के बारे में कैसे जाउंगा। AFAIK, मैं खुद को नहीं बनाता, एंड्रॉइड स्वचालित रूप से करता है जब उपयोगकर्ता मेरा ऐप चलाता है, तो मैं इसका संदर्भ कैसे दूं? तेजी से जवाब बीटीडब्ल्यू के लिए धन्यवाद! – gkanwar
हम्म, यकीन नहीं है, मैंने अभी तक कोई एंड्रॉइड विकास नहीं किया है। मैं डेमोएक्टिविटी दस्तावेज की तलाश करूंगा। क्या डेमोएक्टिविटी में 'इंस्टेंस() 'या' getInstance() 'विधि है? यदि ऐसा है, तो हो सकता है कि आपको क्या चाहिए। –
खैर, डेमोएक्टिविटी एक वर्ग है जिसे मैंने बनाया है जो मूल एंड्रॉइड कोड में निहित सामान्य गतिविधि वर्ग को बढ़ाता है। मैंने एंड्रॉइड में गतिविधि के लिए प्रलेखन देखा, और getInstanceCount() नामक एक फ़ंक्शन है, लेकिन इंस्टेंस() या getInstance() जैसी कुछ भी नहीं है। – gkanwar