-1

안녕하세요. 프로그래밍에 새로운 브랜드입니다. 그래서 내가 작업하고있는 응용 프로그램은 배열로 채워지는 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) 

응용 프로그램.

+0

customAdapter 클래스는 어디에 있습니까? –

+1

오류를 게시 할 수 있습니까? – Michael

+0

_ 이제 새로운 활동의 내용은 어떤 항목이 선택되었는지에 달려 있습니다 ._ 이럴 경우, 그 정보를 의도를 통해'RouteDetails' 활동에 전달해야합니다. – pathfinderelite

답변

1

당신은 의도에 의해 활동 사이에 데이터를 전송해야합니다
전송의 경우 :

 Intent routeDetails = new Intent(view.getContext(), RouteDetails.class); 
     routeDetails.putExtra("value","Shark Bait - 5.9"); 
     startActivity(routeDetails); 

그리고 다른 활동에서 데이터를 얻을 : MainActivity의

 routeDetailsView.setText(getIntent().getExtras().getShort("value")) 
+0

안녕하세요. 감사하지만 작동하지 않습니다. 나는 listview가 멈춘다는 말을하는 동일한 어플리케이션을 얻는다. – user4297729

+0

안녕하세요, 나는 일할 수있었습니다. – user4297729

0

onItemClick() :

Intent intent = new Intent(getActivity(), RouteDetails.class); 
intent.putExtra("route", routes[position]); 
startActivity(intent); 

Route의 onCreate() 세부 정보 :

routeDetailsView.setText(getIntent().getExtras().getString("route")); 
+0

안녕하세요. 고맙습니다.하지만 일할 수는 없습니다. 같은 앱이 충돌하여 listview가 중지되었다는 메시지가 나타납니다 – user4297729

+0

'onItemClick()'메소드에서'routeDetailsView.setText ("Shark Bait - 5.9");를 제거해보십시오. –

+0

나는 그랬지만 여전히 충돌한다 – user4297729

관련 문제