2015-06-02 7 views
13

को हल नहीं कर सकता है मुझे findViewByid के साथ कोई समस्या है लेकिन मुझे यह नहीं पता कि समस्या कहां है।विधि 'findViewById (int)'

import android.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.ProgressBar; 

import java.util.ArrayList; 
import java.util.List; 


public class FirstFragment extends Fragment { 
public static final String TAG = "first"; 

private WebView mWebView; 
ProgressBar progressBar; 


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


    mWebView = (WebView) findViewById(R.id.activity_main_webview); 

    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.google.com"); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.secondefragment, container, false); 
} 

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


} 
} 

किसी भी मदद की सराहना की जाएगी:

यहाँ मेरी FirstFragment वर्ग कोड है।

उत्तर

24

आप onCreateView में ऐसा करने की जरूरत:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.secondefragment, container, false); 
    mWebView = (WebView) view.findViewById(R.id.activity_main_webview); 
    progressBar = (ProgressBar) view.findViewById(R.id.progressBar1); 

    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.google.com"); 

    return view; 


} 
+0

एक कोई वापसी बयान त्रुटि – Ferhat

+0

समझे वास्तव में अपने त्रुटि है क्या? शायद एक नया सवाल पूछें? –

+0

मैंने अपने ऑनक्रेट व्यू को आपके साथ बदल दिया लेकिन यह कहते हैं कि गायब रिटर्न स्टेटमेंट, मैंने कहा: 'वापसी inflater.inflate (R.layout.secondefragment, कंटेनर, झूठा);' लेकिन यह फोन के डिफ़ॉल्ट वेबब्रोसर पर वेबपृष्ठ खोलता है, आपके समय के लिए धन्यवाद – Ferhat

20

FragmentfindViewById() विधि प्रदान नहीं करता है। यह Activity या View में प्रदान किया गया है। Fragment को लागू करते समय आप onCreate() में अपने विचारों को फुलाते नहीं हैं (जैसे आप आमतौर पर Activity में करते हैं।) इसके बजाय, आप इसे onCreateView() में करते हैं और आपको फुलाए गए लेआउट के भीतर आईडी खोजने के लिए फुलाए गए रूट View का उपयोग करने की आवश्यकता है।

3

getActivity().findViewById() काम करता है। हालांकि, यह एक अच्छा अभ्यास नहीं है क्योंकि टुकड़ा किसी अन्य गतिविधि में पुन: उपयोग किया जा सकता है।

इसके लिए अनुशंसित तरीका इंटरफ़ेस को परिभाषित करना है।

  • इंटरफ़ेस में विधियों को शामिल करना चाहिए जिससे खंड को अपनी मूल गतिविधि के साथ संवाद करने की आवश्यकता हो।

    public interface MyInterfcae { 
        void showTextView(); 
    } 
    
  • तब आपकी गतिविधि उस इंटरफ़ेस को लागू करती है।

    public class MyActivity extends Activity implements MyInterfcae { 
        @Override 
        public void showTextView(){ 
         findViewById(R.id.textview).setVisibility(View.VISIBLE); 
        } 
    } 
    
  • उस खंड में इंटरफ़ेस का संदर्भ लें।

    MyInterface mif = (MyInterface) getActivity(); 
    
  • एक विधि कॉल करें।

    mif.showTextView(); 
    

इस तरह, टुकड़ा और गतिविधि पूरी तरह से decoupled कर रहे हैं और हर गतिविधि है जो लागू करता है कि टुकड़ा, जो अपने आप को कि टुकड़ा संलग्न करने के लिए सक्षम है।

0

मैं एंड्रॉइड स्टूडियो सीखने में एक ही प्रश्न को पूरा करता हूं, सिर्फ इसलिए कि मैं Fragment द्वारा प्रोजेक्ट बना रहा हूं। Blank Activity चुनें Fragment इसे हल करेगा।

-1

23 से बदल रहा है targetSdkVersion द्वारा समाधान पाया findViewById() विधि से पहले getView() जोड़ें।

इस तरह

:

getView().findViewById(R.id.potatoes);

+0

प्रश्न पहले से ही स्वीकार्य उत्तर मिला है। – Saveen

+0

एक प्रश्न जो काम नहीं कर रहा है। और अब मैंने यह भी देखा है कि मेरा अपना getView() काम नहीं कर रहा है। – Vraces

-1

इस तरह आप समस्या को हल कर सकते हैं:

toggleButton1=(ToggleButton)findViewById(R.id.toggleButton1); 
toggleButton2=(ToggleButton)findViewById(R.id.toggleButton2); 
+1

कृपया अपने उत्तर के बारे में अधिक विवरण और/या जानकारी जोड़ें और यह पूछे जाने वाले समस्या को कैसे हल करता है ताकि अन्य स्पष्टीकरण मांगे बिना आसानी से इसे समझ सकें – koceeng

संबंधित मुद्दे