я внимательно изучил этот вопрос, так как вы, ребята, были настолько уверенны, и я обнаружил, что набрал неправильное имя макета, пока я печатал вопрос (извините за это)
правильный контент, который у меня есть, таков:
setContentView(R.layout.main);
End Edit
я вижу свой идентификатор в R.Java:
public static final int txtReadMore_link=0x7f06000e;
Обновить:
03-19 17:05:07.158: E/AndroidRuntime(1356): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.website.playlist_activity}: java.lang.NullPointerException
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.os.Handler.dispatchMessage(Handler.java:99)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.os.Looper.loop(Looper.java:123)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-19 17:05:07.158: E/AndroidRuntime(1356): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 17:05:07.158: E/AndroidRuntime(1356): at java.lang.reflect.Method.invoke(Method.java:507)
03-19 17:05:07.158: E/AndroidRuntime(1356): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-19 17:05:07.158: E/AndroidRuntime(1356): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-19 17:05:07.158: E/AndroidRuntime(1356): at dalvik.system.NativeStart.main(Native Method)
03-19 17:05:07.158: E/AndroidRuntime(1356): Caused by: java.lang.NullPointerException
03-19 17:05:07.158: E/AndroidRuntime(1356): at net.website.playlist_activity.onCreate(playlist_activity.java:101)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-19 17:05:07.158: E/AndroidRuntime(1356): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
Я пытаюсь получить доступ к текстовому виду из пользовательского списка, а ниже - код, и я получаю ошибку null ref... как я могу получить доступ к txtReadMore_link
?
показать новое действие, когда пользователь нажимает на ссылку.
playlist_activity
private TextView link;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_row);
//throwing error - NULL????
link = (TextView)findViewById(R.id.txtReadMore_link);
link.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int duration = Toast.LENGTH_SHORT;
TextView tx =(TextView)v.findViewById(R.id.txtReadMore_link);
Toast toast = Toast.makeText(playlist_activity.this, tx.getText(), duration);
toast.show();
}
});
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#b5b5b5"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"></ListView>
</LinearLayout>
list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" >
<!-- ListRow Left sied Thumbnail image -->
<LinearLayout android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="3dip"
android:layout_alignParentLeft="true"
android:background="@drawable/image_bg"
android:layout_marginRight="5dip">
<ImageView
android:id="@+id/list_image"
android:layout_width="50dip"
android:layout_height="50dip"
android:src="@drawable/rihanna"/>
</LinearLayout>
<!-- Title Of Song-->
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/thumbnail"
android:layout_toRightOf="@+id/thumbnail"
android:text="Rihanna Love the way lie"
android:textColor="#040404"
android:typeface="sans"
android:textSize="15dip"
android:textStyle="bold"/>
<!-- Artist Name -->
<TextView
android:id="@+id/artist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title"
android:textColor="#343434"
android:textSize="10dip"
android:layout_marginTop="1dip"
android:layout_toRightOf="@+id/thumbnail"
android:text="Just gona stand there and ..." />
<TextView
android:id="@+id/txtReadMore_link"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:clickable="true"
android:text="Click here to read more.."
android:textSize="9sp" />
</RelativeLayout>
Вы не можете использовать findViewById()
из onCreate()
для поиска View
которое находится в макете строки ListView
. Правильный способ заключается в использовании пользовательского адаптера, а в getView()
для этого конкретного View
задается прослушиватель кликов. В отношении StackOverflow
существует много вопросов относительно того, как это сделать. Вот несколько руководств:
http://www.vogella.de/articles/AndroidListView/article.html или http://commonsware.com/Android/excerpt.pdf
просто очистите проект и повторите его следующим образом: в своей Eclipse IDE щелкните Project ==> Clean ==> Проверьте свой проект ==> Нажмите OK. и снова запустите свой проект, и он будет работать;)
РЕДАКТИРОВАТЬ :
у вас есть setContentView()
NullPointerException
потому что в вашем методе setContentView()
вы указали макет своей деятельности как: main.xml
И вы пытаетесь найти View
By id, который не находится в вашем макете main.xml
(он находится в вашем list_row.xml
), убедитесь, что вы указали точный макет своей Activity
или попытаетесь объявить свой TextView
в своем макете main.xml
Я подозреваю, что вы не устанавливаете представление, которое, по вашему мнению, для своей деятельности, то есть вы делаете
setContentView(R.layout.list_row);
в onCreate, где вы, вероятно, хотели сказать
setContentView(R.layout.main);
Поскольку txtReadMore_link
находится на вашем main.xml
, а не в вашем list_row.xml
, код не сможет найти представление и вернуть значение null.