मैं एक गैर गतिविधि जावा वर्ग से एक संवाद शुरू करने की कोशिश कर रहा हूँ। क्या ऐसा किया जा सकता है अगर ऐसा है तो कैसे?

6
user629126 21 अप्रैल 2011, 01:01
क्या आप इसे किसी सेवा से करने का प्रयास कर रहे हैं? एक प्रसारण रिसीवर? किसी अन्य वर्ग से जिसमें आपने अपना गतिविधि संदर्भ पारित किया है?
 – 
Maximus
21 अप्रैल 2011, 02:22
यदि आप उत्तर को स्वीकार भी नहीं करते हैं तो कोई भी आपके प्रश्न का उत्तर नहीं देगा।
 – 
JoxTraex
21 अप्रैल 2011, 03:31

2 जवाब

सबसे बढ़िया उत्तर

आप किसी गतिविधि के बाहर एक संवाद दिखा सकते हैं, लेकिन आपको एक संदर्भ वस्तु के संदर्भ की आवश्यकता होगी।

यह वर्ग कोई गतिविधि नहीं है, लेकिन संवाद बना और दिखा सकता है:

public class DialogExample {
  public Context mContext;

  public DialogExample(Context context) {
    mContext = context;
  }

  public void dialogExample() {
    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    builder.setMessage("Dialog created in a separate class!");
    builder.show();
  }

फिर आप इसे किसी गतिविधि में संदर्भित कर सकते हैं:

public void onCreate(Bundle icicle) {
  super.onCreate(icicle);

  DialogExample otherClass = new DialogExample(this);
  otherClass.dialogExample();
}

यह तब आसान हो सकता है जब आपके पास समान संवाद बनाने के लिए उपयोगिता विधियां हों जिनका उपयोग किसी ऐप में एकाधिक गतिविधियों में किया जाता है।

9
tonyc 27 अप्रैल 2011, 01:41
यदि आप बटन क्लिक को संभालना चाहते हैं तो क्या यह गतिविधि या संवाद उदाहरण में किया जा सकता है?
 – 
user629126
21 अप्रैल 2011, 22:58
यह आप पर निर्भर करता है। आप किसी गतिविधि से onClickListeners लेने वाले पैरामीटर जोड़ सकते हैं या उन्हें अपनी विधि में हार्ड कोड कर सकते हैं।
 – 
tonyc
22 अप्रैल 2011, 02:44
नया अलर्टडिअलॉग () एक दृश्यमान निर्माता नहीं है ... आपको इसे करने के लिए एक निर्माता का उपयोग करना होगा
 – 
Panthro
26 अप्रैल 2011, 20:34
मैं उस राफेल के बारे में भूल गया, सुधार के लिए धन्यवाद, मैंने अपना जवाब अपडेट कर लिया है।
 – 
tonyc
27 अप्रैल 2011, 01:41
इसे इस तरह से करने के लिए मुझे संदर्भ को पारित करने की आवश्यकता है। यदि यह कई स्तरों से नीचे चला गया तो संदर्भ को लगातार नीचे करना होगा। क्या किसी प्रकार की स्थिर कक्षा रखने का कोई तरीका है जिसे संवाद प्रदर्शित करने के लिए कहीं से भी बुलाया जा सकता है?
 – 
user629126
4 मई 2011, 02:58

मुझे लगता है कि यह उपयोगी हो सकता है। आप इसका एक स्थिर संदर्भ बना सकते हैं।

public class AddDecisionActivity extends Activity{

public static AddDecisionActivity addDecAct;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);

    setContentView(R.layout.layout_register_decision);
    addDecAct = AddDecisionActivity.this;
}

public static AddDecisionActivity getAddDecAct(){
    return addDecAct;
}
}

फिर आप इसका और संदर्भ दे सकते हैं, और अलर्ट संवाद या जो कुछ भी आपको चाहिए उसे बनाने में सक्षम हो सकते हैं।

private void showCloseConfirmationAlert(String message, final String action){
    AlertDialog.Builder alertBuilder = new AlertDialog.Builder(***AddDecisionActivity.getAddDecAct()***);
    alertBuilder.setTitle(R.string.alert_title);
    alertBuilder.setMessage(message);
    alertBuilder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
        }
    });
    alertBuilder.setPositiveButton(R.string.si, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if(action.equals("logout")){
                Intent cerrarS = new Intent(AddDecisionActivity.getAddDecAct(), LoginActivity.class);
                startActivity(cerrarS);
                finish();
            }
            if(action.equals("finish")){
                finish();
            }

        }
    });

    AlertDialog ad = alertBuilder.create();
    ad.show();
}
-1
ViicEsquivel 17 अक्टूबर 2013, 22:58