2017-02-06 7 views
0

Meine Klasse Dosis kein abstraktes Schlüsselwort vor dem Schlüsselwort Klasse in der Klassendeklaration, aber wenn ich versuchte, die Klasse für eine Aktivität instanziieren, sagt es mir class is abstract; can not be instantiated.Android Studio behauptet, diese Klasse ist abstrakt, wie und warum ist diese Klasse abstrakt?

Das macht keinen Sinn, weil es für mich nicht wie eine abstrakte Klasse aussieht. Bitte helfen Sie mir figer heraus, was ich falsch mache und wie ich das beheben kann es

Der Fehler ist bei new ConnectionClass()

Hier ist die Klasse ConnectionClass

final public class ConnectionClass { 
    String ip = ""; 
    String classs = "net.sourceforge.jtds.jdbc.Driver"; 
    String db = "tmseprd"; 
    String un = ""; 
    String password = ""; 

    @SuppressLint("NewApi") 
    public Connection CONN() { 
     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 
     Connection conn = null; 
     String ConnURL = null; 
     try { 

      Class.forName(classs); 
      ConnURL = "jdbc:jtds:sqlserver://" + ip + ";" 
        + "databaseName=" + db + ";user=" + un + ";password=" 
        + password + ";"; 
      conn = DriverManager.getConnection(ConnURL); 
     } catch (SQLException se) { 
      Log.e("ERRO", se.getMessage()); 
     } catch (ClassNotFoundException e) { 
      Log.e("ERRO", e.getMessage()); 
     } catch (Exception e) { 
      Log.e("ERRO", e.getMessage()); 
     } 
     return conn; 
    } 

    } 

Hier ist die Aktivität activity_connection

public class ConnectionActivity extends AppCompatActivity { 

    ConnectionClass connectionClass; 
    EditText edtuserid,edtpass; 
    Button btnlogin; 
    ProgressBar pbbar; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_connection); 

     connectionClass = new ConnectionClass(); 
     edtuserid = (EditText) findViewById(R.id.edtuserid); 
     edtpass = (EditText) findViewById(R.id.edtpass); 
     btnlogin = (Button) findViewById(R.id.btnlogin); 
     pbbar = (ProgressBar) findViewById(R.id.pbbar); 
     pbbar.setVisibility(View.GONE); 

     btnlogin.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       DoLogin doLogin = new DoLogin(); 
       doLogin.execute(""); 

      } 
     }); 

    } 
+7

Ich hoffe, die sind nicht Ihre echte creds. –

+0

Ich sehe keine Aktivität. Sie können eine letzte Klasse instanziieren, aber Sie können keine Unterklassen einer letzten Klasse erstellen. – zed

+0

@zed versehentlich nicht in die Aktivität, tut mir leid, dass. Ich habe es aktualisiert, was denkst du darüber jetzt? –

Antwort

0

Ich nehme an, Sie erhalten den Fehler bei new ConnectionClass().

Es scheint keine Notwendigkeit für eine letzte Klasse zu geben. Fügen Sie einen Konstruktor hinzu, um auch sicher zu sein. Sie haben vielleicht gemeint, dass Sie eine statische Klasse mit statischen Methoden benötigen.

Verwenden Sie stattdessen:

public class ConnectionClass { 
     String ip = ""; 
     String classs = "net.sourceforge.jtds.jdbc.Driver"; 
     String db = "tmseprd"; 
     String un = ""; 
     String password = ""; 

     public ConnectionClass(){} 

     @SuppressLint("NewApi") 
     public Connection CONN() { 
      .... 
     } 
} 
+0

Ich versuchte dies, aber es funktioniert nicht –

Verwandte Themen