संपादित करें ::: कृपया नीचे मेरा उत्तर को देखें ...एंड्रॉयड में टुकड़े का उपयोग कैसे करें
प्रश्न :::
मैं बहुत एंड्रॉयड में टुकड़े का उपयोग कर के लिए नया हूँ और मैं पूरी तरह से में गड़बड़ कर रहा हूँ।
मैं केवल एक सरल नमूना अनुप्रयोग बनाने की कोशिश कर रहा हूं जो टुकड़ों का उपयोग करता है। मेरा परिदृश्य है, मेरे पास मेरी मुख्य गतिविधि में दो टुकड़े हैं। पहले खंड में एक संपादन और एक बटन है। दूसरे खंड में एक टेक्स्टव्यू है। जब मैं संपादन में एक नाम दर्ज करता हूं और बटन पर क्लिक करता हूं, तो दूसरे खंड में टेक्स्टव्यू को पहले खंड के संपादन में दर्ज नाम प्रदर्शित करना चाहिए।
मैं टुकड़ों की स्थिर असाइनमेंट (एक्सएमएल में टुकड़े असाइन करना) का उपयोग कर रहा हूं।
कृपया एक्सएमएल फाइल और नीचे दिए गए कोड को देखें ...
activity_main.XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/fragment_content_1"
android:name="com.example.fragmentexample.fragment_fragment_1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</fragment>
<fragment
android:id="@+id/fragment_content_2"
android:name="com.example.fragmentexample.fragment_fragment_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- Preview: [email protected]/fragment_basic -->
</fragment>
</LinearLayout>
fragment_fragment_1.XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/edtxtPersonName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btnSayHi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Say Hi" />
</LinearLayout>
fragment_fragment_2.XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtViewResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I will say Hi" />
</LinearLayout>
जावा फ़ाइलें :::
MainActivity.Java
package com.example.fragmentexample;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Fragment_1.Java
package com.example.fragmentexample;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Fragment_1 extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.fragment_fragment_1, container, false);
final EditText edtxtPersonName_Fragment = (EditText) view.findViewById(R.id.edtxtPersonName);
Button btnSayHi_Fragment = (Button) view.findViewById(R.id.btnSayHi);
btnSayHi_Fragment.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String name = edtxtPersonName_Fragment.getText().toString();
FragmentManager fm = getFragmentManager();
Fragment_2 f2 = (Fragment_2) fm.findFragmentById(R.id.fragment_content_2);
if(f2 != null && f2.isInLayout())
{
f2.setName(name);
}
Activity activity = getActivity();
if(activity != null)
{
Toast.makeText(activity, "Say&ing Hi in Progress...", Toast.LENGTH_LONG).show();
}
}
});
return view;
}
}
Fragment_2.Java
package com.example.fragmentexample;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class Fragment_2 extends Fragment{
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
view = inflater.inflate(R.layout.fragment_fragment_2, container, false);
return view;
}
public void setName(String name)
{
TextView txtName = (TextView) view.findViewById(R.id.txtViewResult);
txtName.setText("Hi " + name);
}
}
जब मैं आवेदन चलाने के लिए, वहाँ बहुत हैं अपवादों का .. यहां लॉगकट ट्रेस है ..
04-16 15:06:48.781: E/AndroidRuntime(420): FATAL EXCEPTION: main
04-16 15:06:48.781: E/AndroidRuntime(420): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragmentexample/com.example.fragmentexample.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread.access$500(ActivityThread.java:122)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.os.Looper.loop(Looper.java:132)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread.main(ActivityThread.java:4123)
04-16 15:06:48.781: E/AndroidRuntime(420): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 15:06:48.781: E/AndroidRuntime(420): at java.lang.reflect.Method.invoke(Method.java:491)
04-16 15:06:48.781: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-16 15:06:48.781: E/AndroidRuntime(420): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-16 15:06:48.781: E/AndroidRuntime(420): at dalvik.system.NativeStart.main(Native Method)
04-16 15:06:48.781: E/AndroidRuntime(420): Caused by: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
04-16 15:06:48.781: E/AndroidRuntime(420): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:223)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Activity.setContentView(Activity.java:1786)
04-16 15:06:48.781: E/AndroidRuntime(420): at com.example.fragmentexample.MainActivity.onCreate(MainActivity.java:12)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Activity.performCreate(Activity.java:4397)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
04-16 15:06:48.781: E/AndroidRuntime(420): ... 11 more
04-16 15:06:48.781: E/AndroidRuntime(420): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.fragmentexample.fragment_fragment_1: make sure class name exists, is public, and has an empty constructor that is public
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Fragment.instantiate(Fragment.java:567)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Fragment.instantiate(Fragment.java:535)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Activity.onCreateView(Activity.java:4168)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)
04-16 15:06:48.781: E/AndroidRuntime(420): ... 21 more
04-16 15:06:48.781: E/AndroidRuntime(420): Caused by: java.lang.ClassNotFoundException: com.example.fragmentexample.fragment_fragment_1 in loader dalvik.system.PathClassLoader[/data/app/com.example.fragmentexample-1.apk]
04-16 15:06:48.781: E/AndroidRuntime(420): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
04-16 15:06:48.781: E/AndroidRuntime(420): at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
04-16 15:06:48.781: E/AndroidRuntime(420): at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
04-16 15:06:48.781: E/AndroidRuntime(420): at android.app.Fragment.instantiate(Fragment.java:557)
04-16 15:06:48.781: E/AndroidRuntime(420): ... 24 more
मैंने उदाहरणों को देखा है कि इसे कैसे किया जाए, लेकिन इसे समझ नहीं सका। कृपया उन क्षेत्रों को इंगित करें जहां मैं इसे गलत कर रहा हूं, और कृपया इसे करने का सही तरीका भी पोस्ट करें।
धन्यवाद आपके समय के लिए एक बहुत ...
संपादित करें :::
मैं MainActivity.java बदल दिया है गतिविधि के बजाय FragmentActivity विस्तार करने के लिए और भी एंड्रॉयड बदल दिया है: activity_main में नाम मान। एक्सएमएल जावा फ़ाइलें बजाय टुकड़े की ओर इंगित करने के ...
मैं निम्नलिखित अपवादों :::
04-16 15:29:43.821: E/AndroidRuntime(563): FATAL EXCEPTION: main
04-16 15:29:43.821: E/AndroidRuntime(563): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragmentexample/com.example.fragmentexample.MainActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1815)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread.access$500(ActivityThread.java:122)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.os.Looper.loop(Looper.java:132)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread.main(ActivityThread.java:4123)
04-16 15:29:43.821: E/AndroidRuntime(563): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 15:29:43.821: E/AndroidRuntime(563): at java.lang.reflect.Method.invoke(Method.java:491)
04-16 15:29:43.821: E/AndroidRuntime(563): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-16 15:29:43.821: E/AndroidRuntime(563): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-16 15:29:43.821: E/AndroidRuntime(563): at dalvik.system.NativeStart.main(Native Method)
04-16 15:29:43.821: E/AndroidRuntime(563): Caused by: android.view.InflateException: Binary XML file line #5: Error inflating class fragment
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
04-16 15:29:43.821: E/AndroidRuntime(563): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:223)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.Activity.setContentView(Activity.java:1786)
04-16 15:29:43.821: E/AndroidRuntime(563): at com.example.fragmentexample.MainActivity.onCreate(MainActivity.java:13)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.Activity.performCreate(Activity.java:4397)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1779)
04-16 15:29:43.821: E/AndroidRuntime(563): ... 11 more
04-16 15:29:43.821: E/AndroidRuntime(563): Caused by: java.lang.ClassCastException: com.example.fragmentexample.Fragment_1 cannot be cast to android.support.v4.app.Fragment
04-16 15:29:43.821: E/AndroidRuntime(563): at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.support.v4.app.Fragment.instantiate(Fragment.java:369)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272)
04-16 15:29:43.821: E/AndroidRuntime(563): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:660)
04-16 15:29:43.821: E/AndroidRuntime(563): ... 21 more
यहाँ बदल एक्सएमएल Fil है गतिविधि_माइन का ई।एक्सएमएल
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="@+id/fragment_content_1"
android:name="com.example.fragmentexample.Fragment_1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</fragment>
<fragment
android:id="@+id/fragment_content_2"
android:name="com.example.fragmentexample.Fragment_2"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- Preview: [email protected]/fragment_basic -->
</fragment>
</LinearLayout>
http://www.vogella.com/articles /AndroidFragments/article.html http://developer.android.com/training/basics/fragments/creating.html – Triode
देखें [यहां] (http://v4all123.blogspot.com/2013/07/simple-fragments-tutorial.html)। – Gunaseelan