在片段中我想打開一個新的活動,但類是通過字符串提取的。 在toast中接收myclass.class,但不能打開一個新類,並且如果從一個新類中更改「c」,則代碼工作正常。 謝謝。從類字符串中打開一個新的活動。類null
代碼:
if (item instanceof Movie) {
Log.d(TAG, "Item: " + item.toString());
String page = item.toString();
String pageFinal = page + ".class";
Toast.makeText(getActivity(), item.toString(),
Toast.LENGTH_LONG).show();
Class<?> c = null;
if(pageFinal != null) {
try {
c = Class.forName(pageFinal);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
Intent intent = new Intent(getActivity(), c);
getActivity().startActivity(intent);
}
日誌:
03-07 08:42:19.872 18138-18138/ro.vrt.videoplayerstreaming W/System.err: Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
03-07 08:42:19.872 18138-18138/ro.vrt.videoplayerstreaming D/AndroidRuntime: Shutting down VM
03-07 08:42:19.872 18138-18138/ro.vrt.videoplayerstreaming E/AndroidRuntime: FATAL EXCEPTION: main
Process: ro.vrt.videoplayerstreaming, PID: 18138
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Class.getName()' on a null object reference
at android.content.ComponentName.<init>(ComponentName.java:129)
at android.content.Intent.<init>(Intent.java:4449)
at ro.vrt.videoplayerstreaming.MainFragment$ItemViewClickedListener.onItemClicked(MainFragment.java:71)
at android.support.v17.leanback.widget.ListRowPresenter$ListRowPresenterItemBridgeAdapter$1.onClick(ListRowPresenter.java:243)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
03-07 08:42:22.304 18138-18138/ro.vrt.videoplayerstreaming I/Process: Sending signal. PID: 18138 SIG: 9
編輯:
Movie.java
public class Movie {
private static final String TAG = Movie.class.getSimpleName();
static final long serialVersionUID = 727566175075960653L;
private long id;
private String title;
private String studio;
private String description;
private String cardImageUrl;
public String getCardImageUrl() {
return cardImageUrl;
}
public void setCardImageUrl(String cardImageUrl) {
this.cardImageUrl = cardImageUrl;
}
public Movie() {
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getStudio() {
return studio;
}
public void setStudio(String studio) {
this.studio = studio;
}
@Override
public String toString() {
/*
return "Movie{" +
"id=" + id +
", title='" + title + '\'' +
'}';
*/
return title;
}
public URI getCardImageURI() {
try {
return new URI(getCardImageUrl());
} catch (URISyntaxException e) {
return null;
}
}
}
如何創建一個Movie實例?發佈電影對象的內容。 –
Movie.java已結束。 –
添加創建新Movie實例的代碼。 –