[英]Android java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
[英]java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
我在使用我的應用程序時出現此錯誤:
05-01 14:18:41.000: E/AndroidRuntime(26607): FATAL EXCEPTION: main
05-01 14:18:41.000: E/AndroidRuntime(26607): java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.TextView
有問題的方法:
public void onItemClick(AdapterView<?> adapterView, View view, int postion,
long index) {
// Get MAC adress matching the last 17 characters of the TextView
String info = ((TextView) view).getText().toString(); // HERE IS THE ISSUE
String address = info.substring(info.length() - 17);
Intent intent = new Intent();
intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
setResult(Activity.RESULT_OK, intent);
BluetoothDevice device = (BluetoothDevice) view.getTag();
showEquipementActivity(device);
}
和 XML 文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/ImageView_tactea"
android:layout_width="200dp"
android:layout_height="75dp"
android:src="@drawable/tactea"
android:layout_gravity="center"
android:visibility="visible" />
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView
android:id="@+id/textView1"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/label_list_of_devices"
android:textSize="17dip"
android:textStyle="bold" />
<Button
android:id="@+id/buttonScan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_scan" />
</LinearLayout>
<ListView
android:id="@+id/listViewDevices"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" >
</ListView>
</LinearLayout>
這個 XML 文件用於顯示配對的藍牙設備和找到的新聞設備。
你能幫助我嗎?
如何更改這些行?
String info = ((TextView) view).getText().toString(); // HERE IS THE ISSUE
String address = info.substring(info.length() - 17);
更新:我收到以下錯誤:
05-01 14:39:33.150: E/AndroidRuntime(7160): FATAL EXCEPTION: main
05-01 14:39:33.150: E/AndroidRuntime(7160): java.lang.NullPointerException
05-01 14:39:33.150: E/AndroidRuntime(7160): at com.example.cajou.DiscoverDevicesActivity.onItemClick(DiscoverDevicesActivity.java:179)
05-01 14:39:33.150: E/AndroidRuntime(7160): at android.widget.AdapterView.performItemClick(AdapterView.java:301)
05-01 14:39:33.150: E/AndroidRuntime(7160): at android.widget.AbsListView.performItemClick(AbsListView.java:1276)
更新 2:
我試過了:
TextView textview=(TextView) ((LinearLayout)view).findViewById(R.id.textView1);
String info = textview.getText().toString();
但我對這一行有疑問:
String info = textview.getText().toString();
更新 3:
我試過了:
LinearLayout ll = (LinearLayout) view;
TextView tv = (TextView) ll.findViewById(R.id.textView1);
final String info = tv.getText().toString();
但同樣的問題......這一行是問題所在:
final String info = tv.getText().toString();
僅使用
TextView textview = (TextView)findViewById(R.id.textView1);
String info = textview.getText().toString();
采用
TextView textview=((LinearLayout)view).findViewById(R.id.textView1);
String info = textView.getText().toString();
這里不需要您提供的xml布局文件。 列表視圖行文件是罪魁禍首。因此,請使用row.xml中提到的Textview的ID。
getText()
返回一個EditableText
,而不是String
。 您必須使用toString()
方法將其轉換為String
類型:
String text = (TextView)findViewById(R.id.tv).getText().toString();
當相同的 id 用於不同的組件時,會出現此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.