#android #android-layout
#Android #android-layout
Вопрос:
Что бы я ни делал, когда я использую LinearLayout.addView (t); мое приложение выходит из строя с предупреждением «Разделение остановлено». Я не знаю, что не так, я искал много страниц в Google, но ни одна из них не решила мою проблему.
Это мой fragment_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="br.rodrigo.davy.vazdividiraconta.MainActivity$PlaceholderFragment" >
<TextView
android:id="@ id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/chooseEstablishment"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ScrollView
android:id="@ id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@ id/LinearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@ id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Teste"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
</ScrollView>
это мой код:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
//listEstablishment.add(new Establishment("Bar da Maria"));
//listEstablishment.add(new Establishment("César Burguer"));
//listEstablishment.add(new Establishment("Kilogrego"));
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.LinearLayout2);
//for(Establishment e : listEstablishment)
//{
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView t = new TextView(this);
t.setLayoutParams(lparams);
t.setText("Teste 2");
linearLayout.addView(t);
//}
}
И мой LogCat:
07-02 22:08:37.626: D/AndroidRuntime(3970): Shutting down VM
07-02 22:08:37.626: W/dalvikvm(3970): threadid=1: thread exiting with uncaught exception (group=0x41601ba8)
07-02 22:08:37.626: E/AndroidRuntime(3970): FATAL EXCEPTION: main
07-02 22:08:37.626: E/AndroidRuntime(3970): Process: br.rodrigo.davy.vazdividiraconta, PID: 3970
07-02 22:08:37.626: E/AndroidRuntime(3970): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.rodrigo.davy.vazdividiraconta/br.rodrigo.davy.vazdividiraconta.MainActivity}: java.lang.NullPointerException
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.os.Handler.dispatchMessage(Handler.java:102)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.os.Looper.loop(Looper.java:136)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread.main(ActivityThread.java:5001)
07-02 22:08:37.626: E/AndroidRuntime(3970): at java.lang.reflect.Method.invokeNative(Native Method)
07-02 22:08:37.626: E/AndroidRuntime(3970): at java.lang.reflect.Method.invoke(Method.java:515)
07-02 22:08:37.626: E/AndroidRuntime(3970): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
07-02 22:08:37.626: E/AndroidRuntime(3970): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
07-02 22:08:37.626: E/AndroidRuntime(3970): at dalvik.system.NativeStart.main(Native Method)
07-02 22:08:37.626: E/AndroidRuntime(3970): Caused by: java.lang.NullPointerException
07-02 22:08:37.626: E/AndroidRuntime(3970): at br.rodrigo.davy.vazdividiraconta.MainActivity.onCreate(MainActivity.java:50)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.Activity.performCreate(Activity.java:5231)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-02 22:08:37.626: E/AndroidRuntime(3970): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
07-02 22:08:37.626: E/AndroidRuntime(3970): ... 11 more
07-02 22:08:41.120: I/Process(3970): Sending signal. PID: 3970 SIG: 9
Ответ №1:
LinearLayout2
находится внутри макета фрагмента, а не макета действия. Итак, по сути, вы вызываете findViewById()
не в том месте.
У вас есть два возможных решения:
- Попробуйте вместо этого запустить этот код в placeholderfragment’s
onCreateView()
, или - Полностью избавьтесь от фрагмента и переместите свои представления в activity_main.xml.