2014-11-17 4 views
0

내 질문과 비슷한 질문이 있지만 거기에 게시 된 답변은 저에게 맞지 않습니다. 내 프로그램은 단지 웹뷰를 허용하는 새로운 페이지를 여는 것으로되어있다. 하지만이 페이지를 열려고하면 오류가 많은 위치에 문제가 없는데도 오류가 표시됩니다.java.lang.RuntimeException : 활동을 시작할 수 없습니다. ComponentInfo {...} : java.lang.NullPointerException

public class DetailedEventActivity extends Activity { 

    TextView name; 
    TextView desc; 
    TextView link; 

    String pid; 
    String myName; 
    String myDesc; 
    String myLink; 
    Button eLink; 


    // Progress Dialog 
    private ProgressDialog pDialog; 

    // JSON parser class 
    JSONParser jsonParser = new JSONParser(); 

    // single profile url 
    private static final String url_event_detials = "http://10.0.2.2:8888/week_6/get_all_event.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_EVENT = "event"; 
    private static final String TAG_PID = "eventID"; 
    private static final String TAG_NAME = "eventName"; 
    private static final String TAG_DESC = "eventDescription"; 
    private static final String TAG_LINK = "link"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.detail_event); 

     // getting profile details from intent 
     Intent i = getIntent(); 

     // getting profile id (pid) from intent 
     pid = i.getStringExtra(TAG_PID); 
     myName = i.getStringExtra(TAG_NAME); 
     myDesc = i.getStringExtra(TAG_DESC); 
     myLink = i.getStringExtra(TAG_LINK); 

     name = (TextView) findViewById(R.id.inputName); 
     desc = (TextView) findViewById(R.id.inputDesc); 
     //link = (TextView) findViewById(R.id.inputLink); 

     name.setText(myName); 
     desc.setText(myDesc); 
     link.setText(myLink); 

     eLink = (Button) findViewById(R.id.eventLink); 

     eLink.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       WebView webview = new WebView(DetailedEventActivity.this); 
       setContentView(webview); 
       WebSettings webSettings = webview.getSettings(); 
       webSettings.setJavaScriptEnabled(true); 

       webview.loadUrl(myLink); 
      } 
     }); 



     // Getting complete profile details in background thread 

    } 

그리고이 코드는이 다른 클래스로 연결됩니다.

public class ViewEventActivity extends ListActivity { 

    String pid; 
    String name; 
    String desc; 
    String link; 

    // Progress Dialog 
    private ProgressDialog pDialog; 

    // Creating JSON Parser object 
    JSONParser jParser = new JSONParser(); 

    ArrayList<HashMap<String, String>> eventList; 

    // url to get all profile list 
    private static String url_all_event = "http://10.0.2.2:8888/week_6/get_all_event.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_EVENT = "event"; 
    private static final String TAG_PID = "eventID"; 
    private static final String TAG_NAME = "eventName"; 
    private static final String TAG_DESC = "eventDescription"; 
    private static final String TAG_LINK = "link"; 

    // profiles JSONArray 
    JSONArray event = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.all_event); 

     // Hashmap for ListView 
     eventList = new ArrayList<HashMap<String, String>>(); 

     // Loading profiles in Background Thread 
     new LoadAllEvent().execute(); 

     // Get listview 
     ListView lv = getListView(); 
     // on seleting single event 
     // launching Edit event Screen 

     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // getting values from selected ListItem 
       // String pid = ((TextView) view.findViewById(R.id.pid)).getText().toString(); 

       //Roy 
       String myPid = eventList.get(position).get(TAG_PID); 
       String myName = eventList.get(position).get(TAG_NAME); 
       String myDesc = eventList.get(position).get(TAG_DESC); 
       String myLink = eventList.get(position).get(TAG_LINK); 

       // Starting new intent 
       Intent in = new Intent(getApplicationContext(),DetailedEventActivity.class); 
       // sending pid to next activity 
       in.putExtra(TAG_PID, myPid); 
       Log.d("Put Extra ", "id = "+ myPid); 
       in.putExtra(TAG_NAME, myName); 
       Log.d("Put Extra ", "name = "+ myName); 
       in.putExtra(TAG_DESC, myDesc); 
       Log.d("Put Extra ", "desc = "+ myDesc); 
       in.putExtra(TAG_LINK, myLink); 
       Log.d("Put Extra ", "link = "+ myLink); 
       // starting new activity and expecting some response back 
       startActivityForResult(in, 100); 
      } 
     }); 

    } 

    // Response from Edit profile Activity 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     // if result code 100 
     if (resultCode == 100) { 
      // if result code 100 is received 
      // means user edited/deleted profile 
      // reload this screen again 
      Intent intent = getIntent(); 
      finish(); 
      startActivity(intent); 
     } 

    } 

    /** 
    * Background Async Task to Load all profile by making HTTP Request 
    * */ 
    class LoadAllEvent extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(ViewEventActivity.this); 
      pDialog.setMessage("Loading event. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
     } 

     /** 
     * getting All profiles from url 
     * */ 
     protected String doInBackground(String... args) { 
      // Building Parameters 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 
      // getting JSON string from URL 
      JSONObject json = jParser.makeHttpRequest(url_all_event, "GET", params); 

      // Check your log cat for JSON reponse 
      Log.d("All Event ", json.toString()); 

      try { 
       // Checking for SUCCESS TAG 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // profiles found 
        // Getting Array of profiles 
        event = json.getJSONArray(TAG_EVENT); 

        // looping through All profiles 
        for (int i = 0; i < event.length(); i++) { 
         JSONObject c = event.getJSONObject(i); 

         Log.d("View Json ", "i = "+i); 
         // Storing each json item in variable 
         String id = c.getString(TAG_PID); 
         Log.d("View Json ", "id = "+ id); 
         String name = c.getString(TAG_NAME); 
         Log.d("View Json ", "name = "+ name); 
         String desc = c.getString(TAG_DESC); 
         Log.d("View Json ", "desc = "+ desc); 
         String link = c.getString(TAG_LINK); 
         Log.d("View Json ", "link = "+ link); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_PID, id); 
         map.put(TAG_NAME, name); 
         map.put(TAG_DESC, desc); 
         map.put(TAG_LINK, link); 

         // adding HashList to ArrayList 
         eventList.add(map); 
        } 
       } else { 
        // no profiles found 
        // Launch Add New profile Activity 
        Intent i = new Intent(getApplicationContext(), 
          MainScreenActivity.class); 
        //Main Page Aagin 
        pDialog = new ProgressDialog(ViewEventActivity.this); 
        pDialog.setMessage("Redirecting to main page"); 
        pDialog.setIndeterminate(false); 
        pDialog.setCancelable(false); 
        pDialog.show(); 
        // Closing all previous activities 
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(i); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String file_url) { 
      // dismiss the dialog after getting all profiles 
      pDialog.dismiss(); 
      // updating UI from Background Thread 
      runOnUiThread(new Runnable() { 
       public void run() { 
        /** 
        * Updating parsed JSON data into ListView 
        * */ 
        ListAdapter adapter = new SimpleAdapter(
          ViewEventActivity.this, eventList, 
          R.layout.list_event, new String[] { TAG_PID, 
            TAG_NAME}, 
          new int[] { R.id.pid, R.id.name }); 
        // updating listview 
        setListAdapter(adapter); 
       } 
      }); 

     } 

    } 
} 

그리고 내가 로그 캣에 점점 계속 오류는 다음과 같습니다

11-17 11:21:55.819: E/AndroidRuntime(1391): FATAL EXCEPTION: main 
11-17 11:21:55.819: E/AndroidRuntime(1391): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.DetailedEventActivity}: java.lang.NullPointerException 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.os.Looper.loop(Looper.java:137) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at java.lang.reflect.Method.invoke(Method.java:525) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at dalvik.system.NativeStart.main(Native Method) 
11-17 11:21:55.819: E/AndroidRuntime(1391): Caused by: java.lang.NullPointerException 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at com.example.test.DetailedEventActivity.onCreate(DetailedEventActivity.java:77) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.Activity.performCreate(Activity.java:5133) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 
11-17 11:21:55.819: E/AndroidRuntime(1391):  ... 11 more 

나는이 질문은 사소한 보일 수 있음을 알고 있지만 난 그냥 지난달 자바를 배우기 시작, 그래서 guidiance 도움이 많이 감사합니다 . 감사!

답변

0

당신의 텍스트 뷰 링크가 널 포인터 예외가 발생

//link = (TextView) findViewById(R.id.inputLink); 

link = (TextView) findViewById(R.id.inputLink); 
+0

감사합니다. 그것은 효과가 있었다. 명확하고 간결한 !! –

+0

@TohJunRong 도와 드리겠습니다. 즐겁게 보내십시오. –

1

당신은 적절한 초기화없이 링크 개체에 액세스 :

link.setText(myLink); // <-- null here 

이렇게 변경

//link = (TextView) findViewById(R.id.inputLink); 
    link.setText(myLink); 
관련 문제