Нужна помощь в отладке NullPointerException в Android - PullRequest
0 голосов
/ 02 декабря 2011

В моем приложении есть класс about, чтобы показать какую-то кнопку, и когда пользователь нажимает на кнопку, он переходит к активности веб-просмотра, чтобы просмотреть какую-то веб-страницу, поэтому я определил URL-адреса в классе about, а затем установил метод onlick, чтобы доставить ихто же самое действие веб-просмотра, чтобы открыть веб-страницу, но я продолжаю получать любопытное исключение NullPointerException при выполнении этого действия, и мой logcat печатает только что-то, кроме

12-02 09: 03: 11.815: WARN / ActivityManager (51): Тайм-аут простоя активности для HistoryRecord {44d68ea0 com.appkon.hdtvs / .About} 12-02 09: 03: 17.026: WARN / ActivityManager (51): Тайм-аут удаления активности для HistoryRecord {44e37518 com.appkon.hdtvs / .HDtvs}

Вот мой код. Любая помощь будет оценена, спасибо

About.java

public class About extends Activity{

    private Button backbutton;
    private Button likebutton;
    private ImageView versionlogo;
    private ImageButton faq;
    private ImageButton forum;
    private ImageButton feedback;
    private ImageButton rate;
    private String likepath ="http://appkon.com/hdtvs/share.html";
    private String likename = "分享";
    private String lpath="" ;
    private String lname="" ;
    private String faqpath ="http://appkon.com/hdtvs/faq.html";
    private String faqname ="常见问题";
    private String forumpath= "http://appkon.com/forum/" ;
    private String forumname = "APP论坛";
    private String fqpath="";
    private String fqname="";
    private String frpath="";
    private String frname="";
    private String ratepath ="http://appkon.com/hdtvs/";
    private String ratename="评价";
    private String rpath=""; 
    private String rname="";
    private String feedbackpath ="http://appkon.com/hdtvs/feedback.html";
    private String feedbackname="反馈问题";
    private String fdname="";
    private String fdpath="";

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


        backbutton=(Button) findViewById(R.id.back);
        likebutton=(Button) findViewById(R.id.share);
        faq =(ImageButton)findViewById(R.id.faqbutton);
        forum =(ImageButton)findViewById(R.id.forumbutton);
        feedback =(ImageButton)findViewById(R.id.feedbackbutton);
        rate =(ImageButton)findViewById(R.id.ratebutton);

        backbutton.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, HDtvs.class);
            startActivity(intent);
            About.this.finish();

          }
        });

        likebutton.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, Renrenframe.class);
            startActivity(intent);
            About.this.finish();

          }
        });

        faq.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, Aboutframe.class);
            Bundle bundle = new Bundle();
            bundle.putString("fqpath",faqpath);
            bundle.putString("fqname",faqname);
            intent.putExtras(bundle);
            startActivity(intent);
            About.this.finish();

          }
        });

        feedback.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, Aboutframe.class);
            Bundle bundle = new Bundle();
            bundle.putString("fdpath",feedbackpath);
            bundle.putString("fdname",feedbackname);
            intent.putExtras(bundle);
            startActivity(intent);
            About.this.finish();

          }
        });

        rate.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, Aboutframe.class);
            Bundle bundle = new Bundle();
            bundle.putString("rpath",ratepath);
            bundle.putString("rname",ratename);
            intent.putExtras(bundle);
            startActivity(intent);
            About.this.finish();

          }
        });

        forum.setOnClickListener(new View.OnClickListener()
        {
          public void onClick(View v)
          {
            Intent intent = new Intent();
            intent.setClass(About.this, Aboutframe.class);
            Bundle bundle = new Bundle();
            bundle.putString("frpath",forumpath);
            bundle.putString("frname",forumname);
            intent.putExtras(bundle);
            startActivity(intent);
            About.this.finish();

          }
        });

        }
}

Aboutframe.java

public class Aboutframe extends Activity{

      private TextView namebar;
      private ImageButton likebutton;
      private ImageButton backbutton;
      private WebView aboutframe;
      private String lpath ;
      private String lname ;
      private String fqpath;
      private String fqname;
      private String frpath;
      private String frname;
      private String rpath; 
      private String rname;
      private String fdname;
      private String fdpath;


      @Override    
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.aboutframe);
          this.requestWindowFeature(Window.FEATURE_NO_TITLE);//remove title bar

          backbutton=(ImageButton) findViewById(R.id.back);
          likebutton=(ImageButton) findViewById(R.id.share);
          aboutframe =(WebView)findViewById(R.id.aboutframe);

          Intent intent=this.getIntent();
          Bundle bunde = intent.getExtras();

          lname = bunde.getString("lname");
          lpath = bunde.getString("lpath");
          fqname = bunde.getString("fqname");
          fqpath = bunde.getString("fqpath");
          frname = bunde.getString("frname");
          frpath = bunde.getString("frpath");
          rname = bunde.getString("rname");
          rpath = bunde.getString("rpath");
          fdname = bunde.getString("fdname");
          fdpath = bunde.getString("fdpath");

          if(lname != null&lpath!= null){
              namebar.setText(lname);
              aboutframe.setWebViewClient(new WebViewClient(){  
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                      view.loadUrl(lpath);  
                      return true; 
                  }
                  });  
          }
          if(fqname != null&fqpath!= null){
              namebar.setText(fqname);
              aboutframe.setWebViewClient(new WebViewClient(){  
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                      view.loadUrl(fqpath);  
                      return true; 
                  }
                  });  
          }
          if(frname != null&frpath!= null){
              namebar.setText(frname);
              aboutframe.setWebViewClient(new WebViewClient(){  
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                      view.loadUrl(frpath);  
                      return true; 
                  }
                  });  
          }
          if(rname != null&rpath!= null){
              namebar.setText(rname);
              aboutframe.setWebViewClient(new WebViewClient(){  
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                      view.loadUrl(rpath);  
                      return true; 
                  }
                  });  
          }
          if(fdname != null&fdpath!= null){
              namebar.setText(fdname);
              aboutframe.setWebViewClient(new WebViewClient(){  
                  public boolean shouldOverrideUrlLoading(WebView view, String url) {  
                      view.loadUrl(fdpath);  
                      return true; 
                  }
                  });  

              backbutton.setOnClickListener(new View.OnClickListener()
              {
                public void onClick(View v)
                {
                  Intent intent = new Intent();
                  intent.setClass(Aboutframe.this, About.class);
                  startActivity(intent);
                  Aboutframe.this.finish();

                }
              });

              likebutton.setOnClickListener(new View.OnClickListener()
              {
                public void onClick(View v)
                {
                  Intent intent = new Intent();
                  intent.setClass(Aboutframe.this, Renrenframe.class);
                  startActivity(intent);
                  Aboutframe.this.finish();

                }
              });
          }



}
}

Ответы [ 3 ]

0 голосов
/ 02 декабря 2011

поместите весь свой код между

try
{
your Code here...
}
catch(NullPointerException e)
{
e.printStackTrace();
}
0 голосов
/ 02 декабря 2011

Лучше использовать && вместо &. Последний является «двоичным и», вы хотите использовать «логический и».

0 голосов
/ 02 декабря 2011

Эта ошибка означает, что время вашей активности истекло.

Не понимаю, почему вы звоните:

aboutframe.setWebViewClient

несколько раз.Вы можете попробовать заменить if's на if else's:

/*...*/
else if(frname != null&frpath!= null){
/*...*/
else if(rname != null&rpath!= null){
/*...*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...