안녕하세요. 프로그래밍에 새로운 브랜드입니다. 그래서 내가 작업하고있는 응용 프로그램은 배열로 채워지는 listView입니다. Listener가 추가되어 목록에서 항목을 선택하면 새로운 활동이 열립니다. 이제 새로운 활동의 내용은 선택된 항목을 기반으로합니다. 목록 항목을 선택하는 것으로부터 새로운 활동을 시작할 수 있습니다. 그러나 새로운 액티비티의 텍스트 뷰를 설정하려고 할 때 앱 실행이 중지됩니다. 나는 많은 관련 게시물을 살펴 봤지만 여전히 텍스트를 설정하는 방법을 알 수 없습니다. Heres는앱 TextView를 설정할 때 충돌이 발생합니다
내 MainActivity.java
package com.example.zach.listview;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import static com.example.zach.listview.R.id.routeDetailsView;
public class MainActivity extends AppCompatActivity {
public static String[] routes = {"Information","Crag Map","Main Wall","1. Shark Bait - 5.9", "2. Rain Check - 5.8", "3. Rain Check Direct - 5.7+",
"4. Arocknophobia - 5.7", "5. Balls Deep - 5.9+", "6. Jingle Bells - 5.9", "7. Itching to Climb - 5.8-", "8. Hog Nose 5.10+",
"9. Slab Dance - 5.10", "10. Don't Screw with My Disco - 5.11c"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//TextView for route details
final TextView routeDetailsView = (TextView) findViewById(R.id.routeDetailsView);
ListAdapter routeAdapter = new CustomAdapter(this, routes);
final ListView routeListView = (ListView) findViewById(R.id.routeListView);
routeListView.setAdapter(routeAdapter);
routeListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String route = String.valueOf(parent.getItemAtPosition(position));
if (route == "1. Shark Bait - 5.9") {
Intent routeDetails = new Intent(view.getContext(), RouteDetails.class);
startActivity(routeDetails);
routeDetailsView.setText("Shark Bait - 5.9");
}
}
}
);
}
}
Heres는 내 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.zach.listview.MainActivity">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="24dp"
android:id="@+id/routeListView" />
</RelativeLayout>
Heres는 내 RouteDetails.java
package com.example.zach.listview;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.TextView;
import static com.example.zach.listview.MainActivity.routes;
public class RouteDetails extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_route_details);
//TextView for route details
final TextView routeDetailsView = (TextView)findViewById(R.id.routeDetailsView);
//if(route == "1. Shark Bait - 5.9"){
//routeDetailsView.setText("Shark Bait - 5.9");
//}
}
}
내 activity_route_details.xml
,332 10정말 감사드립니다!
편집 : 여기 내 customAdapter.java
package com.example.zach.listview;
import android.content.Context;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.zach.listview.MainActivity;
/**
* Created by Zach on 11/3/2016.
*/
class CustomAdapter extends ArrayAdapter<String>{
public CustomAdapter(Context context, String[] routes) {
super(context, R.layout.custom_row ,routes);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater routeInflater = LayoutInflater.from(getContext());
View customView = convertView;
if(customView == null){customView = routeInflater.inflate(R.layout.custom_row, parent, false);}
String singleRoute = getItem(position);
TextView routeText = (TextView) customView.findViewById(R.id.routeText);
//for adding count numbers to listView
//int pos = position+1;
//routeText.setText(+pos + ". " + MainActivity.routes [position]);
//pos++;
routeText.setText(singleRoute);
return customView;
}
}
내 오류 메시지가 종료
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zach.listview, PID: 3137
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.zach.listview.MainActivity$1.onItemClick(MainActivity.java:51)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1155)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3126)
at android.widget.AbsListView$3.run(AbsListView.java:4041)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
응용 프로그램.
customAdapter 클래스는 어디에 있습니까? –
오류를 게시 할 수 있습니까? – Michael
_ 이제 새로운 활동의 내용은 어떤 항목이 선택되었는지에 달려 있습니다 ._ 이럴 경우, 그 정보를 의도를 통해'RouteDetails' 활동에 전달해야합니다. – pathfinderelite