gpt4 book ai didi

java - 错误: "System services not available to Activities before onCreate()" even if I got a onCreate() function

转载 作者:行者123 更新时间:2023-12-01 21:53:05 27 4
gpt4 key购买 nike

我尝试通过单击导航从 EditText-Element 添加文本。我尝试在 Java 类中排除对 ListView 元素的访问(其中应添加文本),并在我的主 Activity 中对其进行初始化。如果我现在尝试单击“发送”按钮,则会崩溃,并出现错误:“系统服务在 onCreate() 之前不可用于 Activity ”。我怎样才能解决这个问题?我尝试通过研究类似的问题来解决它,但无法弄清楚......我还尝试将 onCreate-Method 添加到 ListViewSDK-Class。

主要 Activity :

public class MainActivity extends AppCompatActivity {

private TextView mTextMessage;

ListViewSDK LISTVIEW;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
//LISTVIEW instanz erstellen
LISTVIEW=new ListViewSDK();
//Download Last messages
//Add messages to MessagesList

}



private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.send_button:
//Send Message to ServerScript
//Initialize Inputfield
EditText INPUTFIELD = (EditText) findViewById(R.id.inputfield);
String MESSAGE = INPUTFIELD.getText().toString();
LISTVIEW.ADD_ITEM(MESSAGE);

return true;
}
return false;
}
};

}

ListViewSDK:

public class ListViewSDK extends ListActivity {

//ArrayList mit Strings für die Chatanzeige
ArrayList<String> ITEMS=new ArrayList<String>();
//Adapter der die Daten der ListView verwaltet
ArrayAdapter<String> ADAPTER;
public void onCreate(Bundle icicle){
super.onCreate(icicle);
ADAPTER=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ITEMS);
setListAdapter(ADAPTER);
}
public void ADD_ITEM(String ITEM){
ITEMS.add(ITEM);
ADAPTER.notifyDataSetChanged();
}
}

Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation"/>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/inputfield"
tools:layout_editor_absoluteX="8dp" app:layout_constraintBottom_toBottomOf="parent">

</ListView>
<EditText android:id="@+id/inputfield" app:layout_constraintBottom_toTopOf="@+id/navigation" android:layout_width="match_parent" android:layout_height="48dp" android:background="@android:color/darker_gray"></EditText>

</android.support.constraint.ConstraintLayout>

导航.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:id="@+id/send_button"
android:icon="@drawable/ic_paper_plane"
android:title="Send"/>

</menu>

最佳答案

该问题是由 ListViewSDK 引起的onCreate()中的实例创建您的MainActivity

在 Android 中,切勿调用 Android 组件的构造函数( ActivitiesFragmentsServiceContentProviderBroadcastReceiver )
它们有自己的生命周期,并由 Android 系统实例化。使用Intent召唤他们或使用 Context (取决于您的需要)而不是调用构造函数。

进一步阅读:
1.Intro to Activities
2.Starting new Activities

此外,您还可以拥有独立的 ListView 。您不必使用 Lifecycle 对其进行子类化有组件(如 Activity )。只需获取 [Recycler View][3]你应该没问题。

关于java - 错误: "System services not available to Activities before onCreate()" even if I got a onCreate() function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58755485/

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