gpt4 book ai didi

android - 向 ScrollView 添加元素会使应用程序 Android SDK 崩溃

转载 作者:行者123 更新时间:2023-11-29 15:15:17 26 4
gpt4 key购买 nike

我正在尝试用我的应用程序制作一个解释器类型的东西,其中从服务器上的文件中获取一个字符串,并用一个拆分来分解它。这是代码:

public void onBtnClick(View view)
{
final String message = ((EditText) findViewById(R.id.editText)).getText().toString();
final String mes = message.replace(".meb", "");
final TextView urlTextOut = (TextView) findViewById(R.id.URLtextView);
final ScrollView linearLayout = (ScrollView) findViewById(R.id.setscroll);
new Thread() {
StringBuilder text = new StringBuilder();
@Override
public void run() {
try

{
String str = "";
URL url = new URL("http://awsomisoft.com/" + mes + "/" + mes + ".meb");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

while ((str = in.readLine()) != null) {
text.append(str);
}
in.close();
} catch (MalformedURLException e1)

{
}
catch (IOException e)
{
}
if(message.contains(".meb")) {
String str[] = text.toString().split("%");
for (final String l : str) {
String code[] = l.split(" ");
if (code[0].toString().equals("$")) {
//Compile
} else {
runOnUiThread(new Runnable() {
@Override
public void run() {
final TextView tv = new TextView(getApplicationContext());
tv.setText(l);
linearLayout.addView(tv);
}
});
}
}
}
else {
if(message == null) {
runOnUiThread(new Runnable() {
@Override
public void run() {
urlTextOut.setText("404 Error");
}
});
}
}
}
}.start();

}

我认为将 View 元素运行到 uithread 中可以防止它崩溃,但由于某种原因它仍然崩溃(所有这些都在一个线程中)。代码有什么问题?感谢您的帮助。

编辑:

这是 Activity 的 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="awsomisoft.yemeb.List"
android:id="@+id/List"
android:background="#ffffffff">

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="100dp"
android:background="@drawable/back_web"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:id="@+id/relativeLayout">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go"
android:id="@+id/button2"
android:background="#ffffffff"
android:onClick="onBtnClick"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignBottom="@+id/button2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#ffffffff"
android:layout_toLeftOf="@+id/button2"
android:layout_toStartOf="@+id/button2"
android:layout_alignTop="@+id/button2" />
</RelativeLayout>

<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/setscroll"
android:layout_toEndOf="@+id/URLtextView"
android:layout_below="@+id/relativeLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/URLtextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</ScrollView>

</RelativeLayout>

日志:

07-28 12:03:38.743 341 535 W ActivityManager: Force removing
ActivityRecord{41038b18 awsomisoft.yemeb/.Main}: app died, no saved state
07-28 12:03:38.873 341 614 W InputMethodManagerService: Got
RemoteException sending setActive(false) notification to pid 2404 uid 10070

最佳答案

ScrollView 只能有一个 child

您不能将 child strait 添加到 ScrollView,因此 linearLayout.addView(tv); 将不起作用。将 LinearLayout 作为子项添加到 ScrollView 并将 TextViews 添加到 LinearLayout(或任何 GroupView) 代替。

所以需要先修改XML布局:

<ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/URLtextView"
android:layout_below="@+id/relativeLayout"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp">
<LinearLayout
android:id="@+id/childsContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/URLtextView"/>
</LinearLayout>
</ScrollView>

然后不是将子项添加到 ScrollView (具有 id linearLayout 的那个),而是需要将它们添加到具有 id childsContainer/p>

关于android - 向 ScrollView 添加元素会使应用程序 Android SDK 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25002124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com